diff --git a/schemas/accounts-cirrus/health/health.2.bq b/schemas/accounts-cirrus/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/accounts-cirrus/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/accounts-cirrus/health/health.2.schema.json b/schemas/accounts-cirrus/health/health.2.schema.json new file mode 100644 index 000000000..84670af1c --- /dev/null +++ b/schemas/accounts-cirrus/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"accounts_cirrus", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/accounts-cirrus/metrics/metrics.2.bq b/schemas/accounts-cirrus/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/accounts-cirrus/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/accounts-cirrus/metrics/metrics.2.schema.json b/schemas/accounts-cirrus/metrics/metrics.2.schema.json new file mode 100644 index 000000000..768af7b90 --- /dev/null +++ b/schemas/accounts-cirrus/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"accounts_cirrus", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/burnham/health/health.2.bq b/schemas/burnham/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/burnham/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/burnham/health/health.2.schema.json b/schemas/burnham/health/health.2.schema.json new file mode 100644 index 000000000..a2d89c5cc --- /dev/null +++ b/schemas/burnham/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"burnham", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":1130 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/burnham/metrics/metrics.2.bq b/schemas/burnham/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/burnham/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/burnham/metrics/metrics.2.schema.json b/schemas/burnham/metrics/metrics.2.schema.json new file mode 100644 index 000000000..029d12799 --- /dev/null +++ b/schemas/burnham/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"burnham", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":10000 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/experimenter-cirrus/health/health.2.bq b/schemas/experimenter-cirrus/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/experimenter-cirrus/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/experimenter-cirrus/health/health.2.schema.json b/schemas/experimenter-cirrus/health/health.2.schema.json new file mode 100644 index 000000000..86783a7e4 --- /dev/null +++ b/schemas/experimenter-cirrus/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"experimenter_cirrus", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/experimenter-cirrus/metrics/metrics.2.bq b/schemas/experimenter-cirrus/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/experimenter-cirrus/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/experimenter-cirrus/metrics/metrics.2.schema.json b/schemas/experimenter-cirrus/metrics/metrics.2.schema.json new file mode 100644 index 000000000..8e2ee42bd --- /dev/null +++ b/schemas/experimenter-cirrus/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"experimenter_cirrus", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-crashreporter/health/health.2.bq b/schemas/firefox-crashreporter/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/firefox-crashreporter/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-crashreporter/health/health.2.schema.json b/schemas/firefox-crashreporter/health/health.2.schema.json new file mode 100644 index 000000000..9db4a02c0 --- /dev/null +++ b/schemas/firefox-crashreporter/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_crashreporter", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-crashreporter/metrics/metrics.2.bq b/schemas/firefox-crashreporter/metrics/metrics.2.bq new file mode 100644 index 000000000..bfbd7afa6 --- /dev/null +++ b/schemas/firefox-crashreporter/metrics/metrics.2.bq @@ -0,0 +1,1089 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Number of failed crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_failure", + "type": "INT64" + }, + { + "description": "Number of pending crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_pending", + "type": "INT64" + }, + { + "description": "Number of successfull crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_success", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The submission status when main/plugin/content crashes are submitted. 1 is success, 0 is failure. Keyed on the CrashManager Crash.type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PROCESS_CRASH_SUBMIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "crash_submit_success", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Collecting XHR channel status on error code when statusCode == 0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submission_channel_status", + "type": "RECORD" + }, + { + "description": "Amount and error name reported when performing crash submission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submission_collector_errors", + "type": "RECORD" + }, + { + "description": "An attempt to submit a crash. Keyed on the CrashManager Crash.type.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PROCESS_CRASH_SUBMIT_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submit_attempt", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Size (in bytes) of the compressed crash store JSON file.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CRASH_STORE_COMPRESSED_BYTES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "crash_compressed_store_size", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-crashreporter/metrics/metrics.2.schema.json b/schemas/firefox-crashreporter/metrics/metrics.2.schema.json new file mode 100644 index 000000000..7c4023be8 --- /dev/null +++ b/schemas/firefox-crashreporter/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_crashreporter", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop-background-defaultagent/health/health.2.bq b/schemas/firefox-desktop-background-defaultagent/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/firefox-desktop-background-defaultagent/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop-background-defaultagent/health/health.2.schema.json b/schemas/firefox-desktop-background-defaultagent/health/health.2.schema.json new file mode 100644 index 000000000..f9514e784 --- /dev/null +++ b/schemas/firefox-desktop-background-defaultagent/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop_background_defaultagent", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop-background-defaultagent/metrics/metrics.2.bq b/schemas/firefox-desktop-background-defaultagent/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/firefox-desktop-background-defaultagent/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop-background-defaultagent/metrics/metrics.2.schema.json b/schemas/firefox-desktop-background-defaultagent/metrics/metrics.2.schema.json new file mode 100644 index 000000000..36a20d137 --- /dev/null +++ b/schemas/firefox-desktop-background-defaultagent/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop_background_defaultagent", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop-background-tasks/health/health.2.bq b/schemas/firefox-desktop-background-tasks/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/firefox-desktop-background-tasks/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop-background-tasks/health/health.2.schema.json b/schemas/firefox-desktop-background-tasks/health/health.2.schema.json new file mode 100644 index 000000000..49eea672b --- /dev/null +++ b/schemas/firefox-desktop-background-tasks/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop_background_tasks", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop-background-tasks/metrics/metrics.2.bq b/schemas/firefox-desktop-background-tasks/metrics/metrics.2.bq new file mode 100644 index 000000000..47a522481 --- /dev/null +++ b/schemas/firefox-desktop-background-tasks/metrics/metrics.2.bq @@ -0,0 +1,1531 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the shell service identified this app as the default browser.\nChecked once near startup.\nOn Windows, this is operationalized as whether Firefox is the default\nHTTP protocol handler and the default HTML file handler.\n", + "mode": "NULLABLE", + "name": "browser_default_at_launch", + "type": "BOOL" + }, + { + "description": "True if the about:home startup cache was written via the AsyncShutdown blocker. This metric was generated to correspond to the Legacy Telemetry scalar browser.startup.abouthome_cache_shutdownwrite.\n", + "mode": "NULLABLE", + "name": "browser_startup_abouthome_cache_shutdownwrite", + "type": "BOOL" + }, + { + "description": "True when the browser was started in kiosk mode.\n", + "mode": "NULLABLE", + "name": "browser_startup_kiosk_mode", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.cache pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_cache.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_cache", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.cookies pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_cookies.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_cookies", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.downloads pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_downloads.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_downloads", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.formdata pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_formdata.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_formdata", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.history pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_history.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_history", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.offlineApps pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_offlineApps.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_offline_apps", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.openWindows pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_openWindows.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_open_windows", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.sessions pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_sessions.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_sessions", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.siteSettings pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_siteSettings.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_site_settings", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.sanitize.sanitizeOnShutdown pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_sanitize_sanitizeOnShutdown.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_sanitize_sanitize_on_shutdown", + "type": "BOOL" + }, + { + "description": "Whether this app was kept in macOS Dock on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_kept_in_dock.\n", + "mode": "NULLABLE", + "name": "os_environment_is_kept_in_dock", + "type": "BOOL" + }, + { + "description": "Whether the non-Private Browsing version of this app was pinned to taskbar on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_taskbar_pinned.\n", + "mode": "NULLABLE", + "name": "os_environment_is_taskbar_pinned", + "type": "BOOL" + }, + { + "description": "Whether the Private Browsing version of this app was pinned to taskbar on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_taskbar_pinned_private.\n", + "mode": "NULLABLE", + "name": "os_environment_is_taskbar_pinned_private", + "type": "BOOL" + }, + { + "description": "If a primary-password is enabled for this profile. Set soon after browser startup. Does not update if a primary password is added or removed after startup.\n", + "mode": "NULLABLE", + "name": "primary_password_enabled", + "type": "BOOL" + }, + { + "description": "Records whether TLS key logging has been enabled via the environment variable SSLKEYLOGFILE.\n", + "mode": "NULLABLE", + "name": "sslkeylogging_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not this startup is the first startup since OS reboot (according to our best guess.) This metric was generated to correspond to the Legacy Telemetry scalar startup.is_cold.\n", + "mode": "NULLABLE", + "name": "startup_is_cold", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of failed crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_failure", + "type": "INT64" + }, + { + "description": "Number of pending crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_pending", + "type": "INT64" + }, + { + "description": "Number of successfull crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_success", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of times that a profile has seen the 'Set Default Browser' dialog.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram BROWSER_SET_DEFAULT_DIALOG_PROMPT_RAWCOUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_set_default_dialog_prompt_rawcount", + "type": "RECORD" + }, + { + "description": "Result of the Set Default Browser dialog. After Firefox 89 the these values are: (0=Use Firefox + 'Don't ask again' checked, 1=Use Firefox + 'Don't ask again' unchecked, 2=Not Now + 'Don't ask again' checked, 3=Not Now + 'Don't ask again' unchecked). Before Firefox 89 these values were: (0=Use Firefox + 'Always perform check' unchecked, 1=Use Firefox + 'Always perform check' checked, 2=Not Now + 'Always perform check' unchecked, 3=Not Now + 'Always perform check' checked).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BROWSER_SET_DEFAULT_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_set_default_result", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Last time the background update was triggered.\n", + "mode": "NULLABLE", + "name": "background_update_time_last_update_scheduled", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The submission status when main/plugin/content crashes are submitted. 1 is success, 0 is failure. Keyed on the CrashManager Crash.type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PROCESS_CRASH_SUBMIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "crash_submit_success", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records whether Firefox was the default handler for particular file types or protocols. The result is split into keys which represent the file extension or scheme: currently, a subset of the file types Firefox registers to handle, namely \".pdf\" and \"mailto\" as protocol. In the future, more file types may be recorded. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_default_handler.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "os_environment_is_default_handler", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count for the number of errors encountered trying to determine attribution data: on Windows, from the installers (stub and full); on macOS, from an extended attributed on the .app bundle.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_ATTRIBUTION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_attribution_errors", + "type": "RECORD" + }, + { + "description": "Whether Firefox is the system default browser on startup. A true value is also recorded here, and a false value is recorded to set_default_error, if a user clicked 'Use Firefox as my default browser' on an in-product prompt. (Note that on Windows 8+ the latter action opens the right settings dialog but does not actually change the default browser without further user action.) On Windows, 'system default browser' is operationalized as whether Firefox is the default HTTP protocol handler.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_IS_USER_DEFAULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_is_user_default", + "type": "RECORD" + }, + { + "description": "True if the browser was unable to determine if the browser was set as default.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_IS_USER_DEFAULT_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_is_user_default_error", + "type": "RECORD" + }, + { + "description": "True if the profile has `browser.shell.checkDefaultBrowser` set to true.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_SET_DEFAULT_ALWAYS_CHECK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_always_check", + "type": "RECORD" + }, + { + "description": "True if the browser was unable to set Firefox as the default browser\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_SET_DEFAULT_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_error", + "type": "RECORD" + }, + { + "description": "Result of each attempt to set the default browser with SetDefaultExtensionHandlersUserChoice() for pdf extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_SET_DEFAULT_PDF_HANDLER_USER_CHOICE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_pdf_handler_user_choice_result", + "type": "RECORD" + }, + { + "description": "Result of each attempt to set the default browser with SetDefaultBrowserUserChoice()\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_SET_DEFAULT_USER_CHOICE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_user_choice_result", + "type": "RECORD" + }, + { + "description": "Collecting XHR channel status on error code when statusCode == 0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submission_channel_status", + "type": "RECORD" + }, + { + "description": "Amount and error name reported when performing crash submission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submission_collector_errors", + "type": "RECORD" + }, + { + "description": "An attempt to submit a crash. Keyed on the CrashManager Crash.type.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PROCESS_CRASH_SUBMIT_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submit_attempt", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "Records counts for when Firefox was invoked (i.e., was already running and was not launched) to handle a file type or protocol with `-osint -url ...`. The result is split into keys which represent the file extension: currently, the set of file types Firefox registers to handle, namely \".avif\", \".htm\", \".html\", \".pdf\", \".shtml\", \".xht\", \".xhtml\", \".svg\", \".webp\", and the set of protocol schemes that Firefox registers to handle, namely \"about\", \"http\", \"https\", \"mailto\". If Firefox was invoked to handle a file type or protocol it does not register to handle by default, the count is recorded as \".\" or \"\", respectively (neither of which are valid extension or protocol identifiers). This metric was generated to correspond to the Legacy Telemetry scalar os.environment.invoked_to_handle.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "os_environment_invoked_to_handle", + "type": "RECORD" + }, + { + "description": "Records counts for when Firefox was launched afresh (i.e., was not already running) to handle a file type or protocol with `-osint -url ...`. The result is split into keys which represent the file extension: currently, the set of file types Firefox registers to handle, namely \".avif\", \".htm\", \".html\", \".pdf\", \".shtml\", \".xht\", \".xhtml\", \".svg\", \".webp\", and the set of protocol schemes that Firefox registers to handle, namely \"about\", \"http\", \"https\", \"mailto\". If Firefox was launched to handle a file type or protocol it does not register to handle by default, the count is recorded as \".\" or \"\", respectively (neither of which are valid extension or protocol identifiers). This metric was generated to correspond to the Legacy Telemetry scalar os.environment.launched_to_handle.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "os_environment_launched_to_handle", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Size (in bytes) of the compressed crash store JSON file.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CRASH_STORE_COMPRESSED_BYTES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "crash_compressed_store_size", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How the about:home startup cache functioned on startup.\n0: Result value was never set (error case) 1: Cache did not exist 2: Cache page stream was corrupt / inaccessible 3: Cache script stream was corrupt / inaccessible 4: Cache was invalidated by a version bump 5: Cache was valid, but read too late to be useful. 6: Cache was valid and used. 7: Cache is disabled. 8: User did not load about:home on its own by default. 9: Cache is disabled because about:newtab preloading is disabled.\nThis metric was generated to correspond to the Legacy Telemetry scalar browser.startup.abouthome_cache_result.\n", + "mode": "NULLABLE", + "name": "browser_startup_abouthome_cache_result", + "type": "INT64" + }, + { + "description": "A count of how many \"session\" cookie exceptions a user has set. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.session_permission_exceptions.\n", + "mode": "NULLABLE", + "name": "datasanitization_session_permission_exceptions", + "type": "INT64" + }, + { + "description": "Measures user retention of the Global Privacy Control. 0 = never enabled, 1 = enabled, 2 = disabled (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.global_privacy_control_enabled.\n", + "mode": "NULLABLE", + "name": "security_global_privacy_control_enabled", + "type": "INT64" + }, + { + "description": "Measures user retention of the HTTPS-Only Mode. 0 = never enabled, 1 = enabled, 2 = disabled (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.https_only_mode_enabled.\n", + "mode": "NULLABLE", + "name": "security_https_only_mode_enabled", + "type": "INT64" + }, + { + "description": "Measures user retention of the HTTPS-Only Mode in Private Browsing. 0 = https-only never enabled in PBM, 1 = https-only enabled in PBM, 2 = https-only disabled in PBM (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.https_only_mode_enabled_pbm.\n", + "mode": "NULLABLE", + "name": "security_https_only_mode_enabled_pbm", + "type": "INT64" + }, + { + "description": "The time in seconds between the first browser window loading, and the time the OS started. This can give us an indication of whether starting the browser may have been the first thing the user did after starting their computer. This metric was generated to correspond to the Legacy Telemetry scalar startup.seconds_since_last_os_restart.\n", + "mode": "NULLABLE", + "name": "startup_seconds_since_last_os_restart", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Records how Firefox was started on Windows. Currently will be one of \"Desktop\", \"DesktopPrivate\", \"StartMenu\" (including pins), \"StartMenuPrivate\", \"Taskbar\", \"TaskbarPrivate\", \"OtherShortcut\", or \"Other\" This metric was generated to correspond to the Legacy Telemetry scalar os.environment.launch_method.\n", + "mode": "NULLABLE", + "name": "os_environment_launch_method", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "background_update_reasons_to_not_update", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop-background-tasks/metrics/metrics.2.schema.json b/schemas/firefox-desktop-background-tasks/metrics/metrics.2.schema.json new file mode 100644 index 000000000..a40b6e683 --- /dev/null +++ b/schemas/firefox-desktop-background-tasks/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop_background_tasks", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop-background-update/captcha-detection/captcha-detection.2.bq b/schemas/firefox-desktop-background-update/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/firefox-desktop-background-update/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop-background-update/captcha-detection/captcha-detection.2.schema.json b/schemas/firefox-desktop-background-update/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..4c8c499f0 --- /dev/null +++ b/schemas/firefox-desktop-background-update/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop_background_update", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop-background-update/health/health.2.bq b/schemas/firefox-desktop-background-update/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/firefox-desktop-background-update/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop-background-update/health/health.2.schema.json b/schemas/firefox-desktop-background-update/health/health.2.schema.json new file mode 100644 index 000000000..66b15c00f --- /dev/null +++ b/schemas/firefox-desktop-background-update/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop_background_update", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop-background-update/metrics/metrics.2.bq b/schemas/firefox-desktop-background-update/metrics/metrics.2.bq new file mode 100644 index 000000000..871ca737b --- /dev/null +++ b/schemas/firefox-desktop-background-update/metrics/metrics.2.bq @@ -0,0 +1,37072 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "When an update is available and app.update.auto is disabled, a popup is opened prompting the user to download and install the update. The pref app.update.suppressPrompts causes Firefox Nightly to wait up to 7 days before showing the prompt, instead showing a badge and banner in the meantime. It also prevents Nightly from showing update restart prompts, instead showing a badge and banner immediately. This value is set for the users who set this pref to true. This metric was generated to correspond to the Legacy Telemetry scalar update.suppress_prompts.\n", + "mode": "NULLABLE", + "name": "update_suppress_prompts", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "Number of failed crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_failure", + "type": "INT64" + }, + { + "description": "Number of pending crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_pending", + "type": "INT64" + }, + { + "description": "Number of successfull crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_success", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "On macOS, all browser windows can be closed without exiting Firefox. If there is an update pending in that case, and we can install it silently, we restart automatically in order to do so. This probe counts the number of times the browser restarts to silently install a pending update. This metric was generated to correspond to the Legacy Telemetry scalar update.no_window_auto_restarts.\n", + "mode": "NULLABLE", + "name": "update_no_window_auto_restarts", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "The submission status when main/plugin/content crashes are submitted. 1 is success, 0 is failure. Keyed on the CrashManager Crash.type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PROCESS_CRASH_SUBMIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "crash_submit_success", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Collecting XHR channel status on error code when statusCode == 0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submission_channel_status", + "type": "RECORD" + }, + { + "description": "Amount and error name reported when performing crash submission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submission_collector_errors", + "type": "RECORD" + }, + { + "description": "An attempt to submit a crash. Keyed on the CrashManager Crash.type.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PROCESS_CRASH_SUBMIT_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submit_attempt", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a
is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "If a BITS download fails on the Windows side (that is to say, BITS ecounters an error rather than Firefox failing to interact with BITS), it will likely give an hresult error indicating what happened. This probe reports those error codes to allow us to see if BITS is commonly failing on some systems. This probe is keyed on the type of update download, either \"PARTIAL\" or \"COMPLETE\". This metric was generated to correspond to the Legacy Telemetry scalar update.bitshresult.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_bitshresult", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Firefox keeps downloading updates in a different place from updates that are ready to install. Once the download completes, the resulting file has to be moved from the downloading update directory to the ready update directory. This probe counts the results that we get when attempting to perform this file move. Valid values for the keys for this probe are stored in the MOVE_RESULT_* values in UpdateTelemetry.sys.mjs. This metric was generated to correspond to the Legacy Telemetry scalar update.move_result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_move_result", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "We usually install pending updates at startup, but there are a couple of reasons we might not. This value will be set to \"none\" if there was no reason not to install updates. If the value is \"DevToolsLaunching\", that means that we skipped applying updates because the application startup was actually a startup of the Browser Toolbox, not the browser itself. If the value is \"NotAnUpdatingTask\", that means that the browser launch is a background task other than the background update task, (which have update capabilities disabled). If the value is \"OtherInstanceRunning\", that means that the background update task was launched, but it didn't install an update in order to avoid interfering with other application instances. If the value is \"FirstStartup\", we didn't install any updates because the browser was launched by the installer. If the value is \"MultiSessionInstallLockout\", there are other browser instances running and the Multi Session Install Lockout timeout has not expired yet. Note that, for updates to be ", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_skip_startup_update_reason", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Size (in bytes) of the compressed crash store JSON file.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CRASH_STORE_COMPRESSED_BYTES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "crash_compressed_store_size", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "The AppUpdatePin Enterprise Policy controls the maximum version that the browser can update to. If the policy is set, this probe will report the policy's value. The possible policy values are \"X.\" and \"X.Y.\", where X is the pinned major version and Y is the pinned minor version. This metric was generated to correspond to the Legacy Telemetry scalar update.version_pin.\n", + "mode": "NULLABLE", + "name": "update_version_pin", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The legacy Telemetry client ID of this installation's default profile.\nThe default profile is as determined by the Profile Service, namely `nsIToolkitProfileService.defaultProfile`. The majority of users have only one Firefox installation and only one profile, so the default profile is their regular browsing profile.\nIt is possible for a Firefox installation to not have a default profile, but in such cases the background update task will abort before sending any telemetry; therefore, the legacy Telemetry client ID should always be present.\n", + "mode": "NULLABLE", + "name": "background_update_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop-background-update/metrics/metrics.2.schema.json b/schemas/firefox-desktop-background-update/metrics/metrics.2.schema.json new file mode 100644 index 000000000..2939aa6c7 --- /dev/null +++ b/schemas/firefox-desktop-background-update/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop_background_update", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop/captcha-detection/captcha-detection.2.bq b/schemas/firefox-desktop/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..11f74e83d --- /dev/null +++ b/schemas/firefox-desktop/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1082 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nValue may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0`\nin pings near when the data upload pref is disabled (if Telemetry gets\nto go first), or between when a client_id has been removed and when it\nhas been regenerated.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_client_id", + "type": "STRING" + }, + { + "description": "The profile_group_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_profile_group_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop/captcha-detection/captcha-detection.2.schema.json b/schemas/firefox-desktop/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..83734d1ab --- /dev/null +++ b/schemas/firefox-desktop/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop/health/health.2.bq b/schemas/firefox-desktop/health/health.2.bq new file mode 100644 index 000000000..3b706ee1e --- /dev/null +++ b/schemas/firefox-desktop/health/health.2.bq @@ -0,0 +1,1023 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + }, + { + "description": "The client_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nValue may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0`\nin pings near when the data upload pref is disabled (if Telemetry gets\nto go first), or between when a client_id has been removed and when it\nhas been regenerated.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_client_id", + "type": "STRING" + }, + { + "description": "The profile_group_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_profile_group_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop/health/health.2.schema.json b/schemas/firefox-desktop/health/health.2.schema.json new file mode 100644 index 000000000..2e920721c --- /dev/null +++ b/schemas/firefox-desktop/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop/metrics/metrics.1.bq b/schemas/firefox-desktop/metrics/metrics.1.bq index 35915ccba..a4bedd6ae 100644 --- a/schemas/firefox-desktop/metrics/metrics.1.bq +++ b/schemas/firefox-desktop/metrics/metrics.1.bq @@ -34866,7 +34866,7 @@ "type": "RECORD" }, { - "description": "Records the latencies (ms) of search suggestions fetches per search engine. Keys in this histogram are the search engine identifier for configuration provided search engines and 'other' for search engines installed via other methods.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SUGGESTIONS_LATENCY_MS.\nThis metric was renamed in Gecko 144 from `search.suggestions_latency` and changed to report the search engine identifier rather than the telemetry identifier.\n", + "description": "Records the latencies (ms) of search suggestions fetches per search engine. Keys in this histogram are search engine identifiers for built-in search engines and 'other' for non-built-in search engines.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SUGGESTIONS_LATENCY_MS.\n", "fields": [ { "mode": "NULLABLE", diff --git a/schemas/firefox-desktop/metrics/metrics.2.bq b/schemas/firefox-desktop/metrics/metrics.2.bq new file mode 100644 index 000000000..feb398d99 --- /dev/null +++ b/schemas/firefox-desktop/metrics/metrics.2.bq @@ -0,0 +1,46870 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "True if the user can create backups, i.e. it has not been disabled by a pref or otherwise deemed incompatible.\n", + "mode": "NULLABLE", + "name": "browser_backup_archive_enabled", + "type": "BOOL" + }, + { + "description": "True if the BackupService has initialized and reached idle. You may want to use archive_enabled/restore_enabled to determine whether those features are available, or use scheduler_enabled for whether automatic backups are enabled.\n", + "mode": "NULLABLE", + "name": "browser_backup_enabled", + "type": "BOOL" + }, + { + "description": "True if the BackupService is configured to encrypt backups.\n", + "mode": "NULLABLE", + "name": "browser_backup_pswd_encrypted", + "type": "BOOL" + }, + { + "description": "True if the user can restore backups, i.e. it has not been disabled by a pref or otherwise deemed incompatible.\n", + "mode": "NULLABLE", + "name": "browser_backup_restore_enabled", + "type": "BOOL" + }, + { + "description": "True if the BackupService is configured to automatically create backups in the background.\n", + "mode": "NULLABLE", + "name": "browser_backup_scheduler_enabled", + "type": "BOOL" + }, + { + "description": "Whether the shell service identified this app as the default browser.\nChecked once near startup.\nOn Windows, this is operationalized as whether Firefox is the default\nHTTP protocol handler and the default HTML file handler.\n", + "mode": "NULLABLE", + "name": "browser_default_at_launch", + "type": "BOOL" + }, + { + "description": "True if the about:home startup cache was written via the AsyncShutdown blocker. This metric was generated to correspond to the Legacy Telemetry scalar browser.startup.abouthome_cache_shutdownwrite.\n", + "mode": "NULLABLE", + "name": "browser_startup_abouthome_cache_shutdownwrite", + "type": "BOOL" + }, + { + "description": "True when the browser was started in kiosk mode.\n", + "mode": "NULLABLE", + "name": "browser_startup_kiosk_mode", + "type": "BOOL" + }, + { + "description": "Whether the allow_url_regex_list pref is set to a non-default value.", + "mode": "NULLABLE", + "name": "content_analysis_allow_url_regex_list_set", + "type": "BOOL" + }, + { + "description": "The bypass_for_same_tab_operations pref that is set via enterprise policy.", + "mode": "NULLABLE", + "name": "content_analysis_bypass_for_same_tab_operations", + "type": "BOOL" + }, + { + "description": "Whether the deny_url_regex_list pref is set to a non-default value.", + "mode": "NULLABLE", + "name": "content_analysis_deny_url_regex_list_set", + "type": "BOOL" + }, + { + "description": "The show_blocked_result pref that is set via enterprise policy.", + "mode": "NULLABLE", + "name": "content_analysis_show_blocked_result", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.cache pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_cache.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_cache", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.cookies pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_cookies.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_cookies", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.downloads pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_downloads.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_downloads", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.formdata pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_formdata.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_formdata", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.history pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_history.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_history", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.offlineApps pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_offlineApps.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_offline_apps", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.openWindows pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_openWindows.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_open_windows", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.sessions pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_sessions.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_sessions", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.siteSettings pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_siteSettings.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_site_settings", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.sanitize.sanitizeOnShutdown pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_sanitize_sanitizeOnShutdown.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_sanitize_sanitize_on_shutdown", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "Records whether the user prefers the Extensions Button to be hidden. Corresponds to the inverse value of the `exceptions.unifiedExtensions.button.always_visible` pref.\n", + "mode": "NULLABLE", + "name": "extensions_button_prefers_hidden_button", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user's logged in to an FxA account.\n", + "mode": "NULLABLE", + "name": "fxa_account_enabled", + "type": "BOOL" + }, + { + "description": "Whether the weave service is present and enabled.\nImplies `fxa.account_enabled`.\n", + "mode": "NULLABLE", + "name": "fxa_sync_enabled", + "type": "BOOL" + }, + { + "description": "Indicates if the chatbot feature is enabled.\n", + "mode": "NULLABLE", + "name": "genai_chatbot_enabled", + "type": "BOOL" + }, + { + "description": "Indicates if the chatbot menu is shown without provider.\n", + "mode": "NULLABLE", + "name": "genai_chatbot_menu", + "type": "BOOL" + }, + { + "description": "Indicates if the chatbot page level features are enabled.\n", + "mode": "NULLABLE", + "name": "genai_chatbot_page", + "type": "BOOL" + }, + { + "description": "Indicates if the chatbot feature would show shortcuts on selection.\n", + "mode": "NULLABLE", + "name": "genai_chatbot_shortcuts", + "type": "BOOL" + }, + { + "description": "Indicates if the chatbot feature would show shortcuts custom input.\n", + "mode": "NULLABLE", + "name": "genai_chatbot_shortcuts_custom", + "type": "BOOL" + }, + { + "description": "Indicates if the chatbot feature would open in sidebar.\n", + "mode": "NULLABLE", + "name": "genai_chatbot_sidebar", + "type": "BOOL" + }, + { + "description": "Records if the user has opted-in to use AI for key points generation\n", + "mode": "NULLABLE", + "name": "genai_linkpreview_ai_optin", + "type": "BOOL" + }, + { + "description": "Records if the user has link previews enabled\n", + "mode": "NULLABLE", + "name": "genai_linkpreview_enabled", + "type": "BOOL" + }, + { + "description": "Records if the user defaults to expanded state for key point generation\n", + "mode": "NULLABLE", + "name": "genai_linkpreview_key_points", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Whether the installer is running from an elevated admin user\n", + "mode": "NULLABLE", + "name": "installation_first_seen_admin_user", + "type": "BOOL" + }, + { + "description": "(optional, present if installer_type is \"full\") Whether the default path was used\n", + "mode": "NULLABLE", + "name": "installation_first_seen_default_path", + "type": "BOOL" + }, + { + "description": "(optional, present if installer_type is \"full\") Whether this was an MSI install\n", + "mode": "NULLABLE", + "name": "installation_first_seen_from_msi", + "type": "BOOL" + }, + { + "description": "Whether there was already an install in this location\n", + "mode": "NULLABLE", + "name": "installation_first_seen_install_existed", + "type": "BOOL" + }, + { + "description": "Whether there was already any non-MSIX install on this system\n", + "mode": "NULLABLE", + "name": "installation_first_seen_other_inst", + "type": "BOOL" + }, + { + "description": "Whether there was already any MSIX install on this system\n", + "mode": "NULLABLE", + "name": "installation_first_seen_other_msix_inst", + "type": "BOOL" + }, + { + "description": "Whether the top-level profile directory existed\n", + "mode": "NULLABLE", + "name": "installation_first_seen_profdir_existed", + "type": "BOOL" + }, + { + "description": "(optional, present if installer_type is \"full\") Whether this was a silent install\n", + "mode": "NULLABLE", + "name": "installation_first_seen_silent", + "type": "BOOL" + }, + { + "description": "True if IP Protection is running.\n", + "mode": "NULLABLE", + "name": "ipprotection_enabled", + "type": "BOOL" + }, + { + "description": "Records if the user has the \"Open links from apps next to your active tab\" feature enabled.\n", + "mode": "NULLABLE", + "name": "link_handling_open_next_to_active_tab_settings_enabled", + "type": "BOOL" + }, + { + "description": "Set when a profile refresh is initiated from the uninstaller. This metric was generated to correspond to the Legacy Telemetry scalar migration.uninstaller_profile_refresh.\n", + "mode": "NULLABLE", + "name": "migration_uninstaller_profile_refresh", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Records technical data about whether Activity Stream construction completed successfully\n", + "mode": "NULLABLE", + "name": "newtab_activity_stream_ctor_success", + "type": "BOOL" + }, + { + "description": "Records technical data about whether waiting for the newtab built-in addon readyPromise succeeded.\n", + "mode": "NULLABLE", + "name": "newtab_addon_ready_success", + "type": "BOOL" + }, + { + "description": "True if a downloaded XPI file is where the newtab resources are being mapped from.\n", + "mode": "NULLABLE", + "name": "newtab_addon_xpi_used", + "type": "BOOL" + }, + { + "description": "Records whether the browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar preference is enabled or disabled\n", + "mode": "NULLABLE", + "name": "newtab_handoff_preference_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether this app was kept in macOS Dock on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_kept_in_dock.\n", + "mode": "NULLABLE", + "name": "os_environment_is_kept_in_dock", + "type": "BOOL" + }, + { + "description": "Whether the non-Private Browsing version of this app was pinned to taskbar on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_taskbar_pinned.\n", + "mode": "NULLABLE", + "name": "os_environment_is_taskbar_pinned", + "type": "BOOL" + }, + { + "description": "Whether the Private Browsing version of this app was pinned to taskbar on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_taskbar_pinned_private.\n", + "mode": "NULLABLE", + "name": "os_environment_is_taskbar_pinned_private", + "type": "BOOL" + }, + { + "description": "Whether the user has Picture-in-Picture enabled. This metric was generated to correspond to the Legacy Telemetry scalar pictureinpicture.toggle_enabled.\n", + "mode": "NULLABLE", + "name": "pictureinpicture_toggle_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "If a primary-password is enabled for this profile. Set soon after browser startup. Does not update if a primary password is added or removed after startup.\n", + "mode": "NULLABLE", + "name": "primary_password_enabled", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "Set to true if the user's default search engine has been allowed to be\noverridden by a third-party add-on or OpenSearch engine.\n", + "mode": "NULLABLE", + "name": "search_engine_default_overridden_by_third_party", + "type": "BOOL" + }, + { + "description": "Set to true if the user's default search engine has been allowed to be\noverridden by a third-party add-on or OpenSearch engine.\n", + "mode": "NULLABLE", + "name": "search_engine_private_overridden_by_third_party", + "type": "BOOL" + }, + { + "description": "Reflects the value of the user's browser.search.suggest.ohttp.enabled\npreference. This does not reflect the value of the featureGate preference.\n", + "mode": "NULLABLE", + "name": "search_suggestions_ohttp_enabled", + "type": "BOOL" + }, + { + "description": "Indicates if the user has manually disabled the auto close sidebar feature.\nSet during shopping component init and updated when changed in browser.\n", + "mode": "NULLABLE", + "name": "shopping_settings_auto_close_user_disabled", + "type": "BOOL" + }, + { + "description": "Indicates if the user has manually disabled the auto open sidebar feature.\nSet during shopping component init and updated when changed in browser.\n", + "mode": "NULLABLE", + "name": "shopping_settings_auto_open_user_disabled", + "type": "BOOL" + }, + { + "description": "Indicates if the user has opted out of using the shopping component.\nSet during shopping component init and updated when changed in browser.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has manually disabled ads. Set during shopping\ncomponent init and updated when changed in browser.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Indicates if the user has completed the Shopping product Onboarding\nexperience. Set during shopping component init and updated when changed\nin browser.\n", + "mode": "NULLABLE", + "name": "shopping_settings_has_onboarded", + "type": "BOOL" + }, + { + "description": "Indicates if Nimbus has disabled the use the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Records whether TLS key logging has been enabled via the environment variable SSLKEYLOGFILE.\n", + "mode": "NULLABLE", + "name": "sslkeylogging_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not this startup is the first startup since OS reboot (according to our best guess.) This metric was generated to correspond to the Legacy Telemetry scalar startup.is_cold.\n", + "mode": "NULLABLE", + "name": "startup_is_cold", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "Records if the user has smart tab groups enabled\n", + "mode": "NULLABLE", + "name": "tabgroup_smart_tab_enabled", + "type": "BOOL" + }, + { + "description": "User opted into sending Telemetry data again. This metric was generated to correspond to the Legacy Telemetry scalar telemetry.data_upload_optin.\n", + "mode": "NULLABLE", + "name": "telemetry_data_upload_optin", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "When an update is available and app.update.auto is disabled, a popup is opened prompting the user to download and install the update. The pref app.update.suppressPrompts causes Firefox Nightly to wait up to 7 days before showing the prompt, instead showing a badge and banner in the meantime. It also prevents Nightly from showing update restart prompts, instead showing a badge and banner immediately. This value is set for the users who set this pref to true. This metric was generated to correspond to the Legacy Telemetry scalar update.suppress_prompts.\n", + "mode": "NULLABLE", + "name": "update_suppress_prompts", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the \"Switch to Tab\" feature searches across all containers. Corresponds to the value of the `browser.urlbar.switchTabs.searchAllContainers` pref.\n", + "mode": "NULLABLE", + "name": "urlbar_pref_switch_tabs_search_all_containers", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times that about:tabcrashed was unable to find a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram FX_CONTENT_CRASH_DUMP_UNAVAILABLE.\n", + "mode": "NULLABLE", + "name": "browser_content_crash_dump_unavailable", + "type": "INT64" + }, + { + "description": "Counts the number of times that about:tabcrashed was unloaded without submitting.\nThis metric was generated to correspond to the Legacy Telemetry count histogram FX_CONTENT_CRASH_NOT_SUBMITTED.\n", + "mode": "NULLABLE", + "name": "browser_content_crash_not_submitted", + "type": "INT64" + }, + { + "description": "Number of times about:keyboard has been opened.\n", + "mode": "NULLABLE", + "name": "browser_customkeys_opened", + "type": "INT64" + }, + { + "description": "The number of five-second intervals ('ticks') the user was considered\n'active'.\n\n'active' means keyboard or mouse interaction with the application.\nIt doesn't take into account whether or not the window has focus or is in\nthe foreground, only if it is receiving these interaction events.\n\nMigrated from Telemetry's `browser.engagement.active_ticks`.\n", + "mode": "NULLABLE", + "name": "browser_engagement_active_ticks", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "The count of tab open events per subsession, across all windows, after the session has been restored. This includes tab open events from private windows and from manual session restorations (i.e. after crashes and from about:home), but excludes tabs opened vertically. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_open_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_tab_open_event_count", + "type": "INT64" + }, + { + "description": "The count of tab pinned events per subsession, across all windows, after the session has been restored. This includes tab pinned events from private windows. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_pinned_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_tab_pinned_event_count", + "type": "INT64" + }, + { + "description": "The count of tab reload events by the user after unloaded. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_reload_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_tab_reload_count", + "type": "INT64" + }, + { + "description": "The count of tab unload events by TabUnloader due to a low-memory situation. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_unload_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_tab_unload_count", + "type": "INT64" + }, + { + "description": "The count of the total non-unique URIs visited in a subsession, not restricted to a specific protocol, including page reloads and about:* pages (other than initial pages such as about:blank, ...), after the session has been restored. This does not include background page requests and URIs from embedded pages or private browsing. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.unfiltered_uri_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_unfiltered_uri_count", + "type": "INT64" + }, + { + "description": "The number of total non-unique http(s) URIs visited, including page\nreloads, after the session has been restored. URIs on minimized or\nbackground tabs may also be counted. Private browsing uris are included.\n\nMigrated from Telemetry's\n`browser.engagement.total_uri_count_normal_and_private_mode`.\n", + "mode": "NULLABLE", + "name": "browser_engagement_uri_count", + "type": "INT64" + }, + { + "description": "The count of the total non-unique http(s) URIs visited in a subsession, including page reloads, after the session has been restored. URIs on minimized or background tabs may also be counted towards this. Private browsing is not included in this count. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.total_uri_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_uri_count_normal_mode", + "type": "INT64" + }, + { + "description": "The count of tab open events with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.vertical_tab_open_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_vertical_tab_open_event_count", + "type": "INT64" + }, + { + "description": "The count of tab pinned events with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.vertical_tab_pinned_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_vertical_tab_pinned_event_count", + "type": "INT64" + }, + { + "description": "The count of browser window open events per subsession, after the session has been restored. The count includes private windows and the ones from manual session restorations (i.e. after crashes and from about:home). This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.window_open_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_window_open_event_count", + "type": "INT64" + }, + { + "description": "Records a count of how many times a drag event started for a tab within the All Tabs panel. This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.all_tabs_panel_dragstart_tab_event_count.\n", + "mode": "NULLABLE", + "name": "browser_ui_interaction_all_tabs_panel_dragstart_tab_event_count", + "type": "INT64" + }, + { + "description": "Recorded when text recognition in images fails for some unknown reason. This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.textrecognition_error.\n", + "mode": "NULLABLE", + "name": "browser_ui_interaction_textrecognition_error", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "Recorded when Firefox attempts to connect to the DLP agent.", + "mode": "NULLABLE", + "name": "content_analysis_connection_attempt", + "type": "INT64" + }, + { + "description": "Recorded when Firefox attempts to retry connecting to the DLP agent (because a previous attempt to communicate with the agent failed).", + "mode": "NULLABLE", + "name": "content_analysis_connection_attempt_retry", + "type": "INT64" + }, + { + "description": "Recorded when a request is allowed by the allow_url_regex_list.", + "mode": "NULLABLE", + "name": "content_analysis_request_allowed_by_allow_url", + "type": "INT64" + }, + { + "description": "Recorded when a request is blocked by the deny_url_regex_list.", + "mode": "NULLABLE", + "name": "content_analysis_request_blocked_by_deny_url", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "Number of failed crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_failure", + "type": "INT64" + }, + { + "description": "Number of pending crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_pending", + "type": "INT64" + }, + { + "description": "Number of successfull crash report submissions\n", + "mode": "NULLABLE", + "name": "crash_submission_success", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "The count of how many times the downloads panel was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar downloads.panel_shown.\n", + "mode": "NULLABLE", + "name": "downloads_panel_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of:\n`browser.engagement.active_ticks`\n\nIntended for the purpose of testing client side sampling of data. This\nmetric is disabled by default and will be enabled only for the purpose\nof the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_active_ticks", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `downloads.panel_shown`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_panel_shown", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "How often something went awry within\n`AboutWelcome.submitGleanPingForPing`, preventing ping submission.\n", + "mode": "NULLABLE", + "name": "messaging_system_glean_ping_for_ping_failures", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Number of times the page-icon protocol serves an icon equal to or larger than requested.\n", + "mode": "NULLABLE", + "name": "page_icon_fit_icon_count", + "type": "INT64" + }, + { + "description": "Number of times the page-icon protocol serves an icon smaller than requested.\n", + "mode": "NULLABLE", + "name": "page_icon_small_icon_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "Number of sponsored visits that could not find their triggering URL in history. We expect this to be a small number just due to the navigation layer manipulating URLs. A large or growing value may be a concern. This metric was generated to correspond to the Legacy Telemetry scalar places.sponsored_visit_no_triggering_url.\n", + "mode": "NULLABLE", + "name": "places_sponsored_visit_no_triggering_url", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "Counts number of visits to a supported retailer product page\nwhile enrolled in either the control or treatment branches\nof the shopping experiment.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "Number of Telemetry pings added to the archive during the session\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_ARCHIVE_SESSION_PING_COUNT.\n", + "mode": "NULLABLE", + "name": "telemetry_archive_session_ping_count", + "type": "INT64" + }, + { + "description": "Count of individual invalid payloads that were submitted to Telemetry.\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_INVALID_PAYLOAD_SUBMITTED.\n", + "mode": "NULLABLE", + "name": "telemetry_invalid_payload_submitted", + "type": "INT64" + }, + { + "description": "Number of pending Telemetry pings that failed to parse once loaded from the disk\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PENDING_LOAD_FAILURE_PARSE.\n", + "mode": "NULLABLE", + "name": "telemetry_pending_load_failure_parse", + "type": "INT64" + }, + { + "description": "Number of pending Telemetry pings that failed to load from the disk\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PENDING_LOAD_FAILURE_READ.\n", + "mode": "NULLABLE", + "name": "telemetry_pending_load_failure_read", + "type": "INT64" + }, + { + "description": "Number of Telemetry ping files evicted due to server errors (4XX HTTP code received)\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_EVICTED_FOR_SERVER_ERRORS.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_evicted_for_server_errors", + "type": "INT64" + }, + { + "description": "Number of archived Telemetry pings discarded because they exceeded the maximum size\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_SIZE_EXCEEDED_ARCHIVED.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_size_exceeded_archived", + "type": "INT64" + }, + { + "description": "Number of Telemetry pending pings discarded because they exceeded the maximum size\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_SIZE_EXCEEDED_PENDING.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_size_exceeded_pending", + "type": "INT64" + }, + { + "description": "Number of Telemetry pings discarded before sending because they exceeded the maximum size\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_SIZE_EXCEEDED_SEND.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_size_exceeded_send", + "type": "INT64" + }, + { + "description": "The number of pings that were submitted and had to wait for a client id (i.e. before it was cached or loaded from disk)\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_SUBMISSION_WAITING_CLIENTID.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_submission_waiting_clientid", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "On macOS, all browser windows can be closed without exiting Firefox. If there is an update pending in that case, and we can install it silently, we restart automatically in order to do so. This probe counts the number of times the browser restarts to silently install a pending update. This metric was generated to correspond to the Legacy Telemetry scalar update.no_window_auto_restarts.\n", + "mode": "NULLABLE", + "name": "update_no_window_auto_restarts", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A uint recording the number of abandoned engagements in the urlbar. An abandonment occurs when the user begins using the urlbar but stops before completing the engagement. This can happen when the user clicks outside the urlbar to focus a different part of the window. It can also happen when the user switches to another window while the urlbar is focused. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.abandonment.\n", + "mode": "NULLABLE", + "name": "urlbar_abandonment_count", + "type": "INT64" + }, + { + "description": "A uint recording the deletion count for autofilled string in the urlbar. This occurs when the user deletes whole autofilled string by BACKSPACE or DELETE key while the autofilled string is selected. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.autofill_deletion.\n", + "mode": "NULLABLE", + "name": "urlbar_autofill_deletion", + "type": "INT64" + }, + { + "description": "A uint recording the number of engagements the user completes in the urlbar. An engagement occurs when the user navigates to a page using the urlbar, for example by picking a result in the urlbar panel or typing a search term or URL in the urlbar and pressing the enter key. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.engagement.\n", + "mode": "NULLABLE", + "name": "urlbar_engagement_count", + "type": "INT64" + }, + { + "description": "Counts how many times about-page type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_about.\n", + "mode": "NULLABLE", + "name": "urlbar_impression_autofill_about", + "type": "INT64" + }, + { + "description": "Counts how many times adaptive history type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_adaptive.\n", + "mode": "NULLABLE", + "name": "urlbar_impression_autofill_adaptive", + "type": "INT64" + }, + { + "description": "Counts how many times origin type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_origin.\n", + "mode": "NULLABLE", + "name": "urlbar_impression_autofill_origin", + "type": "INT64" + }, + { + "description": "Counts how many times other type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_other.\n", + "mode": "NULLABLE", + "name": "urlbar_impression_autofill_other", + "type": "INT64" + }, + { + "description": "Counts how many times url type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_url.\n", + "mode": "NULLABLE", + "name": "urlbar_impression_autofill_url", + "type": "INT64" + }, + { + "description": "The count of the number of times search terms were removed from the urlbar due to a shown PopupNotification. This event can happen when a user loads a SERP and a PopupNotification is shown, as well as when a user switches away from a tab on a SERP showing a PopupNotification and switches back to it. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.persistedsearchterms.revert_by_popup_count.\n", + "mode": "NULLABLE", + "name": "urlbar_persistedsearchterms_revert_by_popup_count", + "type": "INT64" + }, + { + "description": "The count of the number of times search terms persisted in the Urlbar. This gets recorded after a user loads a SERP that persists search terms, or switches back to an existing tab that should be showing the persisted search terms in the Urlbar, regardless of whether PopupNotification cleared the search terms from the Urlbar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.persistedsearchterms.view_count.\n", + "mode": "NULLABLE", + "name": "urlbar_persistedsearchterms_view_count", + "type": "INT64" + }, + { + "description": "User has blocked seeing trending results. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.trending.block.\n", + "mode": "NULLABLE", + "name": "urlbar_trending_block", + "type": "INT64" + }, + { + "description": "Counts how many times Unified Search Button popup is opened. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.unifiedsearchbutton.opened.\n", + "mode": "NULLABLE", + "name": "urlbar_unifiedsearchbutton_opened", + "type": "INT64" + }, + { + "description": "Counts how many times the zero-prefix urlbar results panel was abandoned. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.zeroprefix.abandonment.\n", + "mode": "NULLABLE", + "name": "urlbar_zeroprefix_abandonment", + "type": "INT64" + }, + { + "description": "Counts how many times a result was picked in the zero-prefix urlbar results panel. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.zeroprefix.engagement.\n", + "mode": "NULLABLE", + "name": "urlbar_zeroprefix_engagement", + "type": "INT64" + }, + { + "description": "Counts how many times the zero-prefix urlbar results panel was shown to the user. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.zeroprefix.exposure.\n", + "mode": "NULLABLE", + "name": "urlbar_zeroprefix_exposure", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Cumulative no. bookmark of searches performed before selecting a link.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PLACES_BOOKMARKS_SEARCHBAR_CUMULATIVE_SEARCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bookmarks_sidebar_cumulative_searches", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Number of fully loaded (i.e., not pending from session restore) tabs opened across all windows, collected at most every 5 minutes whenever the user interacts with the browser in the following ways: open tab/window, page load, restoring a pending tab.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOADED_TAB_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_engagement_loaded_tab_count", + "type": "RECORD" + }, + { + "description": "Number of tabs opened across all windows, collected at most every 5 minutes whenever the user interacts with the browser in the following ways: open tab/window, page load.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TAB_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_engagement_tab_count", + "type": "RECORD" + }, + { + "description": "The browser that data is pulled from. The values correspond to the internal browser ID (see MigrationUtils.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_MIGRATION_SOURCE_BROWSER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_migration_source_browser", + "type": "RECORD" + }, + { + "description": "The number of times that a profile has seen the 'Set Default Browser' dialog.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram BROWSER_SET_DEFAULT_DIALOG_PROMPT_RAWCOUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_set_default_dialog_prompt_rawcount", + "type": "RECORD" + }, + { + "description": "Result of the Set Default Browser dialog. After Firefox 89 the these values are: (0=Use Firefox + 'Don't ask again' checked, 1=Use Firefox + 'Don't ask again' unchecked, 2=Not Now + 'Don't ask again' checked, 3=Not Now + 'Don't ask again' unchecked). Before Firefox 89 these values were: (0=Use Firefox + 'Always perform check' unchecked, 1=Use Firefox + 'Always perform check' checked, 2=Not Now + 'Always perform check' unchecked, 3=Not Now + 'Always perform check' checked).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BROWSER_SET_DEFAULT_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_set_default_result", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "Cumulative no. of search filters applied performed before selecting a link.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PLACES_SEARCHBAR_CUMULATIVE_FILTER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "history_sidebar_cumulative_filter_count", + "type": "RECORD" + }, + { + "description": "Cumulative no. of searches performed before selecting a link.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PLACES_SEARCHBAR_CUMULATIVE_SEARCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "history_sidebar_cumulative_searches", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Cumulative no. of Bookmark-specific searches performed before selecting a bookmark link in Library.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PLACES_LIBRARY_CUMULATIVE_BOOKMARK_SEARCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "library_cumulative_bookmark_searches", + "type": "RECORD" + }, + { + "description": "Cumulative no. of History-specific searches performed before selecting a History link in Library.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PLACES_LIBRARY_CUMULATIVE_HISTORY_SEARCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "library_cumulative_history_searches", + "type": "RECORD" + }, + { + "description": "The width dimension of the 'sizes' attribute for .\nThis metric was generated to correspond to the Legacy Telemetry linear histogram LINK_ICON_SIZES_ATTR_DIMENSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "link_icon_sizes_attr_dimension", + "type": "RECORD" + }, + { + "description": "The possible types of the 'sizes' attribute for . 0: Attribute not specified, 1: 'any', 2: Integer dimensions, 3: Invalid value.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram LINK_ICON_SIZES_ATTR_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "link_icon_sizes_attr_usage", + "type": "RECORD" + }, + { + "description": "Media decoder backend (0=WMF Software, 1=DXVA2D3D9, 2=DXVA2D3D11)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_DECODER_BACKEND_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_decoder_backend_used", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "Number of sites blocked from the new tab page.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NEWTAB_PAGE_BLOCKED_SITES_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "newtab_page_blocked_sites_count", + "type": "RECORD" + }, + { + "description": "Number of pinned sites on the new tab page.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NEWTAB_PAGE_PINNED_SITES_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "newtab_page_pinned_sites_count", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "PLACES: Number of pages annotations\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_ANNOS_PAGES_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_annos_pages_count", + "type": "RECORD" + }, + { + "description": "PLACES: Number of bookmarks\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_BOOKMARKS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_bookmarks_count", + "type": "RECORD" + }, + { + "description": "PLACES: Expiration steps to cleanup the database\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PLACES_EXPIRATION_STEPS_TO_CLEAN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_expiration_steps_to_clean", + "type": "RECORD" + }, + { + "description": "PLACES: Number of keywords\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_KEYWORDS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_keywords_count", + "type": "RECORD" + }, + { + "description": "PLACES: Number of unique pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_PAGES_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_pages_count", + "type": "RECORD" + }, + { + "description": "PLACES: Percentage of bookmarks organized in folders\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PLACES_SORTED_BOOKMARKS_PERC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_sorted_bookmarks_perc", + "type": "RECORD" + }, + { + "description": "PLACES: Percentage of tagged bookmarks\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PLACES_TAGGED_BOOKMARKS_PERC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_tagged_bookmarks_perc", + "type": "RECORD" + }, + { + "description": "PLACES: Number of tags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_TAGS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_tags_count", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "Session restore: Number of tabs restored eagerly in the session that has just been restored.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_SESSION_RESTORE_NUMBER_OF_EAGER_TABS_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_number_of_eager_tabs_restored", + "type": "RECORD" + }, + { + "description": "Session restore: Number of tabs in the session that has just been restored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_NUMBER_OF_TABS_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_number_of_tabs_restored", + "type": "RECORD" + }, + { + "description": "Session restore: Number of windows in the session that has just been restored.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_SESSION_RESTORE_NUMBER_OF_WINDOWS_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_number_of_windows_restored", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "Number of directories in the archive at scan\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_ARCHIVE_DIRECTORIES_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_directories_count", + "type": "RECORD" + }, + { + "description": "Number of Telemetry directories evicted from the archive during cleanup, because they were too old\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_ARCHIVE_EVICTED_OLD_DIRS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_evicted_old_dirs", + "type": "RECORD" + }, + { + "description": "Number of Telemetry pings evicted from the archive during cleanup, because they were over the quota\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_EVICTED_OVER_QUOTA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_evicted_over_quota", + "type": "RECORD" + }, + { + "description": "The age of the oldest Telemetry archive directory in months\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_ARCHIVE_OLDEST_DIRECTORY_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_oldest_directory_age", + "type": "RECORD" + }, + { + "description": "Number of Telemetry pings in the archive at scan\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_SCAN_PING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_scan_ping_count", + "type": "RECORD" + }, + { + "description": "Number of Telemetry pings evicted from the pending pings directory during cleanup, because they were over the quota\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_PENDING_PINGS_EVICTED_OVER_QUOTA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_pings_evicted_over_quota", + "type": "RECORD" + }, + { + "description": "Measures the length of the text that was recognized, in code units.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TEXT_RECOGNITION_TEXT_LENGTH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "text_recognition_text_length", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Last time the background update was triggered.\n", + "mode": "NULLABLE", + "name": "background_update_time_last_update_scheduled", + "type": "STRING" + }, + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + }, + { + "description": "Legacy Telemetry's session start time.\nThe time at which the Telemetry session started.\nLikely near to the (wall-clock) time that the application started.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_session_start_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n", + "mode": "NULLABLE", + "name": "termsofuse_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "The submission status when main/plugin/content crashes are submitted. 1 is success, 0 is failure. Keyed on the CrashManager Crash.type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PROCESS_CRASH_SUBMIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "crash_submit_success", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Counts the number of search suggestion requests for OHTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_request_counter", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "Counts of the different ways sending a Telemetry ping can fail per ping type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_SEND_FAILURE_TYPE_PER_PING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "telemetry_send_failure_type_per_ping", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The widgets in the toolbars. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.toolbar_widgets.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "browser_ui_mirror_for_toolbar_widgets", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Records technical data about whether the metric registration at runtime succeeded\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "newtab_metric_registered", + "type": "RECORD" + }, + { + "description": "Records technical data about whether the ping registration at runtime succeeded\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "newtab_ping_registered", + "type": "RECORD" + }, + { + "description": "Records whether Firefox was the default handler for particular file types or protocols. The result is split into keys which represent the file extension or scheme: currently, a subset of the file types Firefox registers to handle, namely \".pdf\" and \"mailto\" as protocol. In the future, more file types may be recorded. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_default_handler.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "os_environment_is_default_handler", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Name of active IM (e.g., xim, fcitx, ibus, etc) which was actually set by env on Linux. Different from Windows and macOS, this value includes non-IME users even though this is recoded when first compositionstart event because dead key is also implemented by IME on Linux. This metric was generated to correspond to the Legacy Telemetry scalar widget.ime_name_on_linux.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_ime_name_on_linux", + "type": "RECORD" + }, + { + "description": "Name of IME which was selected by users on macOS. The value is Input Source ID if non-Japanese IME was open. Otherwise, if Japanese IME was open, the value is Bundle ID. Input Source ID includes input mode, but Bundle ID does not include input mode. This metric was generated to correspond to the Legacy Telemetry scalar widget.ime_name_on_mac.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_ime_name_on_mac", + "type": "RECORD" + }, + { + "description": "Locale ID and name of IME which was selected by users on Windows. This does NOT collect legacy IMM-IME names since we cannot get readable names and we do not support IMM-IME so aggressively because IME vendors should've already released TIP for TSF for supporting Windows 8 or later completely. This metric was generated to correspond to the Legacy Telemetry scalar widget.ime_name_on_windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_ime_name_on_windows", + "type": "RECORD" + }, + { + "description": "Same data as ime_name_on_windows, but only collecting IME names which inserted CRLF to check whether the feature works. This metric was generated to correspond to the Legacy Telemetry scalar widget.ime_name_on_windows_inserted_crlf.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_ime_name_on_windows_inserted_crlf", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count for the number of errors encountered trying to determine attribution data: on Windows, from the installers (stub and full); on macOS, from an extended attributed on the .app bundle.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_ATTRIBUTION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_attribution_errors", + "type": "RECORD" + }, + { + "description": "The actions taken in about:keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_customkeys_actions", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from about:home, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.about_home.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_about_home", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from about:newtab, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.about_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_about_newtab", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the contextmenu, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.contextmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_contextmenu", + "type": "RECORD" + }, + { + "description": "The count of URI loads triggered in a subsession from the context menu's visual search menuitem, broken down by the originating action.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the searchbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.searchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_searchbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_urlbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_urlbar_handoff", + "type": "RECORD" + }, + { + "description": "The count of URI loads triggered in a subsession from the urlbar after the search term was shown in the urlbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_persisted.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_urlbar_persisted", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar's search mode, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_searchmode.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_urlbar_searchmode", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from a webextension. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.webextension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_webextension", + "type": "RECORD" + }, + { + "description": "Whether we show about:sessionrestore or not. Split by key, which indicates why we showed the item or not. Specifically, 'deferred_restore' means we didn't autorestore and thus didn't show the interstitial; 'autorestore' indicates we autorestored without showing the interstitial. 'shown_old_session', 'shown_only_about_welcomeback', 'shown_many_crashes', 'shown_many_crashes_old_session' all indicate we did show the interstitial because of a crash, and the text after 'shown' indicates what secondary reason there was to show this page (as we don't show it for 'just' one crash). This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.sessionrestore_interstitial.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_sessionrestore_interstitial", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Whether Firefox is the system default browser on startup. A true value is also recorded here, and a false value is recorded to set_default_error, if a user clicked 'Use Firefox as my default browser' on an in-product prompt. (Note that on Windows 8+ the latter action opens the right settings dialog but does not actually change the default browser without further user action.) On Windows, 'system default browser' is operationalized as whether Firefox is the default HTTP protocol handler.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_IS_USER_DEFAULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_is_user_default", + "type": "RECORD" + }, + { + "description": "True if the browser was unable to determine if the browser was set as default.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_IS_USER_DEFAULT_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_is_user_default_error", + "type": "RECORD" + }, + { + "description": "Where the migration wizard was entered from.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FX_MIGRATION_ENTRY_POINT_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_migration_entry_point_categorical", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from about:home. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.about_home.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_about_home", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from about:newtab. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.about_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_about_newtab", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the context menu. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.contextmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_contextmenu", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on visual-search SERP pages where the search was started from the context menu. The key format is the same as for the `contextmenu` labeled counter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was loaded by reloading the page. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.reload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_reload", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the search bar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.searchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_searchbar", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the system, e.g. command line. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.system.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_system", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was loaded from the tab history. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.tabhistory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_tabhistory", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from a place not categorized by the other scalars. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.unknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_unknown", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the urlbar. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_urlbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_urlbar_handoff", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the urlbar after the search term was shown in the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_persisted.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_urlbar_persisted", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the urlbar in search mode. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_searchmode.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_urlbar_searchmode", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from a webextension. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.webextension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_webextension", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the about:home. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.about_home.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_about_home", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the about:newtab. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.about_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_about_newtab", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the context menu. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.contextmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_contextmenu", + "type": "RECORD" + }, + { + "description": "Records counts for in-content visual searches where the search was most likely started from the context menu. The key format is the same as for the `contextmenu` labeled counter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was loaded by reloading the page. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.reload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_reload", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the search bar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.searchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_searchbar", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the system, e.g. command line. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.system.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_system", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was loaded from the tab history. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.tabhistory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_tabhistory", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was started from a place that could not be determined or not categorized by the other scalars. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.unknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_unknown", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the urlbar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_urlbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_urlbar_handoff", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the urlbar after the search term was shown in the urlbar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_persisted.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_urlbar_persisted", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the urlbar in search mode. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_searchmode.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_urlbar_searchmode", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from a webextension. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.webextension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_webextension", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from about:home. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.about_home.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_about_home", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from about:newtab. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.about_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_about_newtab", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the context menu. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.contextmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_contextmenu", + "type": "RECORD" + }, + { + "description": "Records counts of visual-search SERP pages with adverts displayed where the search was started from the context menu. The key format is the same as for the `contextmenu` labeled counter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was loaded by reloading the page. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.reload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_reload", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the search bar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.searchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_searchbar", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the system, e.g. command line. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.system.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_system", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was loaded from the tab history. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.tabhistory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_tabhistory", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from a place not categorized by the other scalars. The key format is ‘:’ See https://firefox- source-docs.mozilla.org/browser/search/telemetry.html#browser- search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.unknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_unknown", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_urlbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_urlbar_handoff", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the urlbar after the search term was shown in the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_persisted.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_urlbar_persisted", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the urlbar in search mode. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_searchmode.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_urlbar_searchmode", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from a webextension. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.webextension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_webextension", + "type": "RECORD" + }, + { + "description": "True if the profile has `browser.shell.checkDefaultBrowser` set to true.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_SET_DEFAULT_ALWAYS_CHECK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_always_check", + "type": "RECORD" + }, + { + "description": "True if the browser was unable to set Firefox as the default browser\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_SET_DEFAULT_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_error", + "type": "RECORD" + }, + { + "description": "Result of each attempt to set the default browser with SetDefaultExtensionHandlersUserChoice() for pdf extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_SET_DEFAULT_PDF_HANDLER_USER_CHOICE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_pdf_handler_user_choice_result", + "type": "RECORD" + }, + { + "description": "Result of each attempt to set the default browser with SetDefaultBrowserUserChoice()\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_SET_DEFAULT_USER_CHOICE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_user_choice_result", + "type": "RECORD" + }, + { + "description": "Diagnostic probe to aid in categorizing tab switch spinners. Records what most recently set the loadTimer to null if a spinner was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FX_TAB_SWITCH_SPINNER_VISIBLE_TRIGGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_tabswitch_spinner_visible_trigger", + "type": "RECORD" + }, + { + "description": "Records when widgets are added, removed or moved in the UI. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.customized_widgets.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_customized_widgets", + "type": "RECORD" + }, + { + "description": "Records a count of how many times the All Tabs Panel was opened, keyed on a string describing the entrypoint. This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.all_tabs_panel_entrypoint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_all_tabs_panel_entrypoint", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the app menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.app_menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_app_menu", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the bookmarks bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.bookmarks_bar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_bookmarks_bar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the content context menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.content_context.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_content_context", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "Records how often users interact with any top-level menu option in the \"List All Tabs\" menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_list_all_tabs_action", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the menu bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.menu_bar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_menu_bar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the nav bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.nav_bar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_nav_bar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the overflow menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.overflow_menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_overflow_menu", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with page action items in the panel. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pageaction_panel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_pageaction_panel", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with page action items in the url bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pageaction_urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_pageaction_urlbar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the pinned area of the overflow menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pinned_overflow_menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_pinned_overflow_menu", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Containers section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneContainers.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_containers", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Experimental section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneExperimental.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_experimental", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the General section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneGeneral.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_general", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Home section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneHome.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_home", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the More From Mozilla section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneMoreFromMozilla.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_more_from_mozilla", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Privacy section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_panePrivacy.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_privacy", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Search section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSearch.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_search", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Search results section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSearchResults.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_search_results", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Sync section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSync.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_sync", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in any other section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneUnknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_unknown", + "type": "RECORD" + }, + { + "description": "Records information about user tab movements within the tab strip.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_tab_movement", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the tab bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_bar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_tabs_bar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the tab context menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_context.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_tabs_context", + "type": "RECORD" + }, + { + "description": "Records a count for each entrypoint (the container of the trigger node) when an item from the tabs context menu is selected. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_context_entrypoint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_tabs_context_entrypoint", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the Unified Extensions area. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.unified_extensions_area.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_unified_extensions_area", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the vertical tab bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.vertical_tabs_container.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_vertical_tabs_container", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Recorded when Firefox fails to connect to the DLP agent. The label is the nsresult that was returned by the connection attempt.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "content_analysis_connection_failure", + "type": "RECORD" + }, + { + "description": "Recorded when a request is sent to the DLP agent. The label is the analysisType of the request, which corresponds to a value in the AnalysisConnector enum in analysis.proto. (e.g. \"FILE_DOWNLOADED\", \"FILE_ATTACHED\", \"BULK_DATA_ENTRY\", etc.)", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "content_analysis_request_sent_by_analysis_type", + "type": "RECORD" + }, + { + "description": "Recorded when a request is sent to the DLP agent. The label is the reason of the request, which corresponds to a value in the ContentAnalysisRequest::Reason enum in analysis.proto. (e.g. \"CLIPBOARD_PASTE\", \"DRAG_AND_DROP\", etc.)", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "content_analysis_request_sent_by_reason", + "type": "RECORD" + }, + { + "description": "Recorded when a response is received from the DLP agent. The label is the action of the response, converted to a string (so \"1\"). The values correspond to nsIContentAnalysisResponse::Action.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "content_analysis_response_action", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user has clicked on the sponsored TopSites on the newtab page. The key is a combination of the source and the placement of the TopSites tile (1-based). such as 'urlbar_1', 'newtab_2'. This metric was generated to correspond to the Legacy Telemetry scalar contextual.services.topsites.click.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contextual_services_topsites_click", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user has viewed the sponsored TopSites on the newtab page. The key is a combination of the source and the placement of the TopSites tile (1-based). such as 'urlbar_1', 'newtab_2'. This metric was generated to correspond to the Legacy Telemetry scalar contextual.services.topsites.impression.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contextual_services_topsites_impression", + "type": "RECORD" + }, + { + "description": "Collecting XHR channel status on error code when statusCode == 0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submission_channel_status", + "type": "RECORD" + }, + { + "description": "Amount and error name reported when performing crash submission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submission_collector_errors", + "type": "RECORD" + }, + { + "description": "An attempt to submit a crash. Keyed on the CrashManager Crash.type.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PROCESS_CRASH_SUBMIT_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_submit_attempt", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Counts how often the hidden Extensions Button is temporarily shown. There are multiple possible triggers for showing the extensions button, only the first that would trigger the transition from hidden to shown is going to be counted. For example, if the button is shown because the \"attention\" dot is shown, and a permission prompt is shown, then we only count the trigger for the attention dot, not the permission prompt.\ncustomize is when the user entered Customize Mode, which causes the Extensions Button to show unconditionally until the user exits the mode.\naddon_install_doorhanger covers notifications related to add-on installations, including blocked installations, add-on download progress, and failed installations. Permission prompts are NOT part of this, but covered by extension_permission_prompt. A typical installation flow triggers both addon_install_doorhanger and extension_permission_prompt.\nextension_controlled_setting is when a notification is anchored to the Extensions Button that notifies the user", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_button_temporarily_unhidden", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "The type of search filters used for the sidebar search.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PLACES_SEARCHBAR_FILTER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "history_sidebar_filter_type", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "The number of history or bookmark items opened from the Library window This metric was generated to correspond to the Legacy Telemetry scalar library.link.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "library_link", + "type": "RECORD" + }, + { + "description": "The number of times the Library window was opened, keyed by 'history' or 'bookmarks' This metric was generated to correspond to the Legacy Telemetry scalar library.opened.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "library_opened", + "type": "RECORD" + }, + { + "description": "The number of history-specific or bookmark-specific searches made from the Library window This metric was generated to correspond to the Legacy Telemetry scalar library.search.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "library_search", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "We received a ping with non-scalar data on a field of this name.\nIf this is existing pre-PingCentre-replacement data, you may need to\naugment the logic in\n`AboutWelcome.submitGleanPingForPing` like the other `handledKeys`.\nIf this is for new, post-PingCentre-replacement data, you should\nprobably prefer a flat structure.\nIf you're unsure, please ask in\n[the #glean channel](https://chat.mozilla.org/#/room/#glean:mozilla.org).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "messaging_system_invalid_nested_data", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the migration wizard detected a browser / profile pair for a particular browser. This is incremented every time the discovery occurs, so multiple openings of the wizard will increase the counts each time. This metric was generated to correspond to the Legacy Telemetry scalar migration.discovered_migrators.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "migration_discovered_migrators", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Records counts for when Firefox was invoked (i.e., was already running and was not launched) to handle a file type or protocol with `-osint -url ...`. The result is split into keys which represent the file extension: currently, the set of file types Firefox registers to handle, namely \".avif\", \".htm\", \".html\", \".pdf\", \".shtml\", \".xht\", \".xhtml\", \".svg\", \".webp\", and the set of protocol schemes that Firefox registers to handle, namely \"about\", \"http\", \"https\", \"mailto\". If Firefox was invoked to handle a file type or protocol it does not register to handle by default, the count is recorded as \".\" or \"\", respectively (neither of which are valid extension or protocol identifiers). This metric was generated to correspond to the Legacy Telemetry scalar os.environment.invoked_to_handle.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "os_environment_invoked_to_handle", + "type": "RECORD" + }, + { + "description": "Records counts for when Firefox was launched afresh (i.e., was not already running) to handle a file type or protocol with `-osint -url ...`. The result is split into keys which represent the file extension: currently, the set of file types Firefox registers to handle, namely \".avif\", \".htm\", \".html\", \".pdf\", \".shtml\", \".xht\", \".xhtml\", \".svg\", \".webp\", and the set of protocol schemes that Firefox registers to handle, namely \"about\", \"http\", \"https\", \"mailto\". If Firefox was launched to handle a file type or protocol it does not register to handle by default, the count is recorded as \".\" or \"\", respectively (neither of which are valid extension or protocol identifiers). This metric was generated to correspond to the Legacy Telemetry scalar os.environment.launched_to_handle.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "os_environment_launched_to_handle", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Records how many times a pinned tab gets activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pinned_tabs_activations", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "A website was visited, which called registerProtocolHandler for mailto://\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "protocolhandler_mailto_handler_prompt_shown", + "type": "RECORD" + }, + { + "description": "User clicked on a button to approve setting the current site as default web mail site. The sum of all counters is the total amount of user interactions and dismissing the same dialog often could be a sign of a bug.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "protocolhandler_mailto_prompt_clicked", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "This is deprecated metric that should not be incoporated into dashboards. Use the `sap.counts` event instead.\nThis metric has been added to Glean to aid transition of histograms and allow the legacy telemetry SEARCH_COUNTS to continue to be recorded.\nRecords search counts for search access points. The format is: .. For the urlbar when in search mode, the format is .urlbar-searchmode. For the urlbar when an internal @engine shortcut is used, the format is: .alias.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SEARCH_COUNTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sap_deprecated_counts", + "type": "RECORD" + }, + { + "description": "Count of impressions of the visual search context menu item. The counter's label is the engine's identifier if the engine is known at the time of impression and it's an app-provided engine. Otherwise the label is \"none\".\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sap_impression_counts_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Counts the type of initialization statuses on start up.\nfailedSettings - failed loading and migrating the search settings file.\nfailedFetchEngines - failed to load or parse the configuration from remote\n settings.\nfailedLoadEngines - failed to create all the search engines from the\n configuration or user installed engines.\nfailedLoadSettingsAddonManager - the addon manager ready promise was rejected. (from FF135)\nsettingsCorrupt - the search settings were reset because of an exception, but\n the search service still finished initializing. (from FF136)\nsuccess - search service successfully initialized.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_service_initialization_status", + "type": "RECORD" + }, + { + "description": "Counts the number of aborted search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_aborted_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of failed search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_failed_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of aborted search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_aborted_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of failed search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_failed_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of successful search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_successful_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of successful search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_successful_requests", + "type": "RECORD" + }, + { + "description": "The input method the user used to select a result in the searchbar. 'enter' => The user hit the Enter key without choosing a result in the popup. 'enterSelection' => The user chose a result and then hit the Enter key. 'click' => The user clicked a result with the mouse.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FX_SEARCHBAR_SELECTED_RESULT_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "searchbar_selected_result_method", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "Counts the specific type of block.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "serp_ads_blocked_count", + "type": "RECORD" + }, + { + "description": "Session restore: Whether none of the backup files contained parse-able JSON\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_SESSION_RESTORE_ALL_FILES_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "session_restore_all_files_corrupt", + "type": "RECORD" + }, + { + "description": "Session restore: Whether the file read on startup contained parse-able JSON\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_SESSION_RESTORE_CORRUPT_FILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "session_restore_corrupt_file", + "type": "RECORD" + }, + { + "description": "The count of time-outs, abnormal shutdown and frameloader crashes observed during an async shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "session_restore_shutdown_flush_all_outcomes", + "type": "RECORD" + }, + { + "description": "Did the browser start after a successful shutdown\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SHUTDOWN_OK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "session_restore_shutdown_ok", + "type": "RECORD" + }, + { + "description": "On quit-application-granted, is the shutdown sync (immediate) or async\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "session_restore_shutdown_type", + "type": "RECORD" + }, + { + "description": "The number of history items opened from the History sidebar. This metric was generated to correspond to the Legacy Telemetry scalar sidebar.link.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sidebar_link", + "type": "RECORD" + }, + { + "description": "The number of searches from the sidebar, per view (e.g.: bookmarks, history). This metric was generated to correspond to the Legacy Telemetry scalar sidebar.search.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sidebar_search", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "For each successful scoring, count whether the relevance score gets boosted or decreased over the original score. Note that given how the score is calculated, it's practically impossible to have the two scores tied. If that's the case anyhow, it will increment the \"boosted\" counter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "suggest_relevance_outcome", + "type": "RECORD" + }, + { + "description": "Count the successful / failed attempts of relevance scoring in Firefox Suggest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "suggest_relevance_status", + "type": "RECORD" + }, + { + "description": "Records interactions with tab groups: expand/collapse; rename, change color; save/reopen/delete; ungroup tabs; open from tab menu/recent/ Awesomebar; move to another window\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabgroup_group_interactions", + "type": "RECORD" + }, + { + "description": "Records interactions with tabs related to a group: open, add tab to group, duplicate, create a new tab, close a tab, reorder, and remove from group\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabgroup_tab_interactions", + "type": "RECORD" + }, + { + "description": "How often do which histograms that use `Telemetry::AccumulateTimeDelta` have clamped samples due to underflow?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_clamping_time_hgrams", + "type": "RECORD" + }, + { + "description": "Number of 'event' pings sent, by reason\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_EVENT_PING_SENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_event_ping_sent", + "type": "RECORD" + }, + { + "description": "Number of event recording failures, by type of failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_EVENT_RECORDING_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_event_recording_error", + "type": "RECORD" + }, + { + "description": "Number of event registration failures, by field causing the failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_EVENT_REGISTRATION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_event_registration_error", + "type": "RECORD" + }, + { + "description": "Count of individual invalid ping types that were submitted to Telemetry.\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_INVALID_PING_TYPE_SUBMITTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_invalid_ping_type_submitted", + "type": "RECORD" + }, + { + "description": "Counts of the different ways sending a Telemetry ping can fail.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_SEND_FAILURE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_send_failure_type", + "type": "RECORD" + }, + { + "description": "Successful telemetry submission\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TELEMETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_success", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "If a BITS download fails on the Windows side (that is to say, BITS ecounters an error rather than Firefox failing to interact with BITS), it will likely give an hresult error indicating what happened. This probe reports those error codes to allow us to see if BITS is commonly failing on some systems. This probe is keyed on the type of update download, either \"PARTIAL\" or \"COMPLETE\". This metric was generated to correspond to the Legacy Telemetry scalar update.bitshresult.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_bitshresult", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Firefox keeps downloading updates in a different place from updates that are ready to install. Once the download completes, the resulting file has to be moved from the downloading update directory to the ready update directory. This probe counts the results that we get when attempting to perform this file move. Valid values for the keys for this probe are stored in the MOVE_RESULT_* values in UpdateTelemetry.sys.mjs. This metric was generated to correspond to the Legacy Telemetry scalar update.move_result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_move_result", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "We usually install pending updates at startup, but there are a couple of reasons we might not. This value will be set to \"none\" if there was no reason not to install updates. If the value is \"DevToolsLaunching\", that means that we skipped applying updates because the application startup was actually a startup of the Browser Toolbox, not the browser itself. If the value is \"NotAnUpdatingTask\", that means that the browser launch is a background task other than the background update task, (which have update capabilities disabled). If the value is \"OtherInstanceRunning\", that means that the background update task was launched, but it didn't install an update in order to avoid interfering with other application instances. If the value is \"FirstStartup\", we didn't install any updates because the browser was launched by the installer. If the value is \"MultiSessionInstallLockout\", there are other browser instances running and the Multi Session Install Lockout timeout has not expired yet. Note that, for updates to be ", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_skip_startup_update_reason", + "type": "RECORD" + }, + { + "description": "Counts how many times an about-page autofill result (e.g., \"about:config\") was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_about.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_autofill_about", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_adaptive.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_autofill_adaptive", + "type": "RECORD" + }, + { + "description": "Counts how many times an origin (domain) autofill result (e.g., \"mozilla.org\") was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_autofill_origin", + "type": "RECORD" + }, + { + "description": "Counts how many times some other type of autofill result that does not have a specific keyed scalar was picked at a given index. This is a fallback that is used when the code is not properly setting a specific autofill type, and it should not normally be used. If it appears in the data, it means we need to investigate and fix the code that is not properly setting a specific autofill type. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_other.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_autofill_other", + "type": "RECORD" + }, + { + "description": "Counts how many times a URL autofill result (e.g., \"mozilla.org/firefox\") was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_url.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_autofill_url", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.bookmark.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_bookmark", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.bookmark_adaptive.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_bookmark_adaptive", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.clipboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_clipboard", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.dynamic.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_dynamic", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.dynamic_wikipedia.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_dynamic_wikipedia", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.extension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_extension", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.formhistory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_formhistory", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.history.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_history", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.history_adaptive.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_history_adaptive", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.keyword.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_keyword", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.navigational.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_navigational", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.quickaction.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_quickaction", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.quicksuggest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_quicksuggest", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.recent_search.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_recent_search", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.remotetab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_remotetab", + "type": "RECORD" + }, + { + "description": "Counts how many times this restrict actions result was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.restrict_keyword_actions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_restrict_keyword_actions", + "type": "RECORD" + }, + { + "description": "Counts how many times this restrict bookmarks result was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.restrict_keyword_bookmarks.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_restrict_keyword_bookmarks", + "type": "RECORD" + }, + { + "description": "Counts how many times this restrict history result was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.restrict_keyword_history.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_restrict_keyword_history", + "type": "RECORD" + }, + { + "description": "Counts how many times this restrict tabs result was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.restrict_keyword_tabs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_restrict_keyword_tabs", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchengine.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchengine", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode from the Search Bookmarks menu item in the Library menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.bookmarkmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_bookmarkmenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by being handed off from the search bar on the new tab page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_handoff", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode from the Search History menu item in a History menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.historymenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_historymenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a keyword offer result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.keywordoffer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_keywordoffer", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a one-off. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.oneoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_oneoff", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode from an unknown entry point. If values appear for this probe in Telemetry, we should review the entry points to search mode. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.other.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_other", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode by unified search button. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.searchbutton.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_searchbutton", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by pressing a keyboard shortcut. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.shortcut.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_shortcut", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting the Search Tabs menu item in the Tab Overflow menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.tabmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_tabmenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a tab-to-search result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.tabtosearch.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_tabtosearch", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a tab-to-search onboarding result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.tabtosearch_onboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_tabtosearch_onboard", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a search shortcut Top Site on the New Tab Page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.topsites_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_topsites_newtab", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a search shortcut Top Site in the Urlbar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.topsites_urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_topsites_urlbar", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a search shortcut on the macOS Touch Bar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.touchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_touchbar", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by typing an alias. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.typed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchmode_typed", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchsuggestion.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchsuggestion", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchsuggestion_rich.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_searchsuggestion_rich", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.switchtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_switchtab", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.tabtosearch.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_tabtosearch", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.tip.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_tip", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.topsite.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_topsite", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.trending.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_trending", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.trending_rich.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_trending_rich", + "type": "RECORD" + }, + { + "description": "Counts how many times an unknown result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.unknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_unknown", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.visiturl.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_visiturl", + "type": "RECORD" + }, + { + "description": "Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.weather.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_picked_weather", + "type": "RECORD" + }, + { + "description": "Counts how many times quickaction results were selected. The key is the in the form \"actionkey-N\" where N is the number of characters the user typed to be shown the action. This metric was generated to correspond to the Legacy Telemetry scalar quickaction.picked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_quickaction_picked", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecing the Search Bookmarks menu item in the Library menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.bookmarkmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_bookmarkmenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after being handed off from the search bar on the new tab page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_handoff", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecing the Search History menu item in a History menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.historymenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_historymenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a keyword offer result. The scalar key for local search modes entered using a restrict keyword will be suffixed with \"keyword\". For example: tabs_keyword, bookmarks_keyword, history_keyword, and actions_keyword. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.keywordoffer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_keywordoffer", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a one-off. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.oneoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_oneoff", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode from an unknown entry point. If values appear for this probe in Telemetry, we should review the entry points to search mode. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.other.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_other", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode by unified search button. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.searchbutton.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_searchbutton", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after pressing a keyboard shortcut. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.shortcut.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_shortcut", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting the Search Tabs menu item in the Tab Overflow menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_tabmenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a tab-to-search result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabtosearch.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_tabtosearch", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a tab-to-search onboarding result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabtosearch_onboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_tabtosearch_onboard", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut Top Site on the New Tab Page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.topsites_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_topsites_newtab", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut Top Site in the Urlbar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.topsites_urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_topsites_urlbar", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut on the macOS Touch Bar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.touchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_touchbar", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after typing an alias. The scalar keys for local search modes entered by typing a restrict keyword will be suffixed with \"keyword\". For example: tabs_keyword, bookmarks_keyword, history_keyword, and actions_keyword. If instead search mode was entered by typing a restrict symbol the key will be suffixed with \"symbol\" (e.g. typing \"%\" will generate \"tabs_symbol\"). This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.typed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_typed", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times non-onboarding tab-to-search results are shown in the Urlbar for a particular search engine. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.tabtosearch.impressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_tabtosearch_impressions", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times onboarding tab-to-search results are shown in the Urlbar for a particular search engine. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.tabtosearch.impressions_onboarding.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_tabtosearch_impressions_onboarding", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times particular tips are shown in the Urlbar and how often their confirm and help buttons are pressed. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.tips.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_tips", + "type": "RECORD" + }, + { + "description": "Counts how many times Unified Search Button items were selected. The key is followings. * builtin_search: Builtin search engine. * addon_search: Addon search engine. * local_search: Local search engine such as Bookmarks. * settings: Settings menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.unifiedsearchbutton.picked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_unifiedsearchbutton_picked", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + }, + { + "description": "Boolean indicating if a touch input device is detected.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TOUCH_ENABLED_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "widget_touch_enabled_device", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How many bookmarks we imported from another browser, keyed by the name of the browser.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_MIGRATION_BOOKMARKS_QUANTITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "browser_migration_bookmarks_quantity", + "type": "RECORD" + }, + { + "description": "How many credit card entries we imported from another browser, keyed by the name of the browser.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_MIGRATION_CARDS_QUANTITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "browser_migration_cards_quantity", + "type": "RECORD" + }, + { + "description": "Errors encountered during migration in buckets defined by the datatype, keyed by the string description of the browser.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_MIGRATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "browser_migration_errors", + "type": "RECORD" + }, + { + "description": "How many extensions were matched to be imported from another browser, keyed by the name of the browser.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_MIGRATION_EXTENSIONS_QUANTITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "browser_migration_extensions_quantity", + "type": "RECORD" + }, + { + "description": "How many history visits we imported from another browser, keyed by the name of the browser.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_MIGRATION_HISTORY_QUANTITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "browser_migration_history_quantity", + "type": "RECORD" + }, + { + "description": "How many logins (passwords) we imported from another browser, keyed by the name of the browser.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_MIGRATION_LOGINS_QUANTITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "browser_migration_logins_quantity", + "type": "RECORD" + }, + { + "description": "Usage of migration for each datatype when migration is run through the post-firstrun flow which allows individual datatypes, keyed by the string description of the browser.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_MIGRATION_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "browser_migration_usage", + "type": "RECORD" + }, + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Cumulative no. of searches performed before selecting a resulting tab.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FIREFOX_VIEW_CUMULATIVE_SEARCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefoxview_cumulative_searches", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "(Bug 1207089) Usage of popup notifications, keyed by ID (0 = Offered, 1..4 = Action (3 is unused), 5 = Click outside (unused), 6 = Leave page, 7 = Use 'X' (unused), 8 = Not now (unused), 10 = Open submenu, 11 = Learn more. Add 20 if happened after reopen.)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram POPUP_NOTIFICATION_STATS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "popup_notification_stats", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Records the WebExtension ID of a search engine where the WebExtension is not installed (= 1), disabled (= 2), search engine no longer specified (= 4), a different name (= 5), where the submission URL is different between the search engine and the WebExtension (= 6). The value '3' has been replaced by '6' to distinguish newer entries. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.engine_invalid_webextension, which was removed in Fx 139.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_searchinit_engine_invalid_webextension", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Records how many pinned tabs the user currently has across all windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pinned_tabs_count", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "session_restore_startup_timeline", + "type": "RECORD" + }, + { + "description": "Windows-only.\nCumulative bytes read by the application according to the OS, per startup\nphase.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_io_read", + "type": "RECORD" + }, + { + "description": "Windows-only.\nCumulative bytes written by the application according to the OS, per startup\nphase.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_io_write", + "type": "RECORD" + }, + { + "description": "Records the number of groups present in the tab bar, split by expanded or collapsed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabgroup_active_groups", + "type": "RECORD" + }, + { + "description": "Records the latest number of tabs in the tab bar, split by being inside a group or outside.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabgroup_tab_count_in_groups", + "type": "RECORD" + }, + { + "description": "Records statistics about the number of tabs per active group: max, median, average and min.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabgroup_tabs_per_active_group", + "type": "RECORD" + }, + { + "description": "Records statistics about the number of tabs per saved tab group: max, median, average and min.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabgroup_tabs_per_saved_group", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + }, + { + "description": "PLACES - stage reached when trying to fix a database corruption, see Places::Database::eCorruptDBReplaceStage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "places_places_database_corruption_handling_stage", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time between sending a request to the DLP agent and receiving a response from the agent. The label is the analysisType of the request.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "content_analysis_response_duration_by_analysis_type", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "(Bug 1207089) Time in ms between displaying a popup notification and dismissing it without an action the first time, keyed by ID\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram POPUP_NOTIFICATION_DISMISSAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "popup_notification_dismissal", + "type": "RECORD" + }, + { + "description": "(Bug 1207089) Time in ms between initially requesting a popup notification and triggering the main action, keyed by ID\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram POPUP_NOTIFICATION_MAIN_ACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "popup_notification_main_action", + "type": "RECORD" + }, + { + "description": "Records the latencies (ms) of search suggestions fetches per search engine. Keys in this histogram are the search engine identifier for configuration provided search engines and 'other' for search engines installed via other methods.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SUGGESTIONS_LATENCY_MS.\nThis metric was renamed in Gecko 144 from `search.suggestions_latency` and changed to report the search engine identifier rather than the telemetry identifier.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_latency", + "type": "RECORD" + }, + { + "description": "Records the latencies (ms) of search suggestions fetches per search engine when using OHTTP. Keys in this histogram are the search engine identifier for configuration provided search engines and 'other' for search engines installed via other methods.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_latency", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Download time for ingestion, labelled by record type", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "suggest_ingest_download_time", + "type": "RECORD" + }, + { + "description": "Time for ingestion (excluding download time), labelled by record type", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "suggest_ingest_time", + "type": "RECORD" + }, + { + "description": "Time executing queries, labelled by provider type", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "suggest_query_time", + "type": "RECORD" + }, + { + "description": "Duration from when the client sends a request to Merino to when the client receives a response, labeled by response status code. Labels are dynamic. For non-OHTTP requests, labels are simply the numeric status code, e.g., \"200\". For OHTTP requests, labels are `${status}_ohttp`, e.g., \"200_ohttp\".\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlbar_merino_latency_by_response_status", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The total compressed size of a single-file profile data backup archive. To reduce fingerprintability, we round to the nearest 1 mebibyte.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_backup_compressed_archive_size", + "type": "RECORD" + }, + { + "description": "The total uncompressed size of all profile data included in a completed backup. To reduce fingerprintability, we round to the nearest 1 mebibyte.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_backup_total_backup_size", + "type": "RECORD" + }, + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Size (in bytes) of the compressed crash store JSON file.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CRASH_STORE_COMPRESSED_BYTES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "crash_compressed_store_size", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Bytes transmitted (incoming) while IP Protection is running.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ipprotection_usage_rx", + "type": "RECORD" + }, + { + "description": "Bytes transmitted (outgoing) while IP Protection is running.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ipprotection_usage_tx", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "The volume of traffic received through browsers that were link targets for sponsored topsite or content navigations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "newtab_spons_nav_traffic_recvd", + "type": "RECORD" + }, + { + "description": "The volume of traffic sent through browsers that were link targets for sponsored topsite or content navigations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "newtab_spons_nav_traffic_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "PLACES: Favicons database filesize (MB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_DATABASE_FAVICONS_FILESIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_database_favicons_filesize", + "type": "RECORD" + }, + { + "description": "PLACES: Database filesize (MB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_DATABASE_FILESIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_database_filesize", + "type": "RECORD" + }, + { + "description": "PLACES: Semantic History database filesize (MB)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_database_semantic_history_filesize", + "type": "RECORD" + }, + { + "description": "Session restore: The size of file sessionstore.js (bytes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_FILE_SIZE_BYTES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_file_size_bytes", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "The size of the Telemetry archive (MB)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_ARCHIVE_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_size", + "type": "RECORD" + }, + { + "description": "The size (MB) of the Telemetry archived, compressed, pings exceeding the maximum file size\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_DISCARDED_ARCHIVED_PINGS_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_discarded_archived_pings_size", + "type": "RECORD" + }, + { + "description": "The size (MB) of the Telemetry pending pings exceeding the maximum file size\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_DISCARDED_PENDING_PINGS_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_discarded_pending_pings_size", + "type": "RECORD" + }, + { + "description": "The size (MB) of the ping data submitted to Telemetry exceeding the maximum size\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_DISCARDED_SEND_PINGS_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_discarded_send_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the Telemetry pending pings directory (MB). The special value 17 is used to indicate over quota pings.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_PENDING_PINGS_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_pings_size", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "What widgets are in which toolbars. Not dissimilar from Telemetry's `browser.ui.toolbar_widgets`, but in a friendlier format. See https://firefox-source-docs.mozilla.org/browser/BrowserUsageTelemetry.html for how widget ids and positions are determined.\n", + "mode": "NULLABLE", + "name": "browser_ui_toolbar_widgets", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "Extended attribution information.\nMapped to client_info.attribution.ext in datasets.\n* `experiment`: name/id of the enrolled funnel experiment\n* `variation`: name/id of the variation cohort used in the enrolled funnel experiment\n* `ua`: identifier derived from the user agent downloading the installer\n e.g. chrome, Google Chrome 123\n* `dltoken`: Unique token created at Firefox download time.\n e.g. c18f86a3-f228-4d98-91bb-f90135c0aa9c\n* `msstoresignedin`: only present if the installation was done through the Microsoft Store,\n and was able to retrieve the \"campaign ID\" it was first installed with.\n This value is \"true\" if the user was signed into the Microsoft Store\n when they first installed, and false otherwise.\n* `dlsource`: identifier that indicate where installations of Firefox originate\n", + "mode": "NULLABLE", + "name": "glean_attribution_ext", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Extended distribution information.\nMapped to client_info.distribution.ext in datasets.\n* `distributionVersion`: pref `distribution.version`, `null` on failure\n* `partnerId`: pref `mozilla.partner.id`, `null` on failure\n* `distributor`: pref `app.distributor`, `null` on failure\n* `distributorChannel`: pref `app.distributor.channel`, `null` on failure\n* `partnerNames`: list from prefs `app.partner.=`\n", + "mode": "NULLABLE", + "name": "glean_distribution_ext", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total size of the current profiles storage.local legacy JSON backend in the browser-extension-data directory, rounded to the nearest 10 kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_browser_extension_data_size", + "type": "INT64" + }, + { + "description": "The total file size of the cookies.sqlite db located in the current profile directory, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_cookies_size", + "type": "INT64" + }, + { + "description": "The total size of logins, payment method, and form autofill related files in the current profile directory, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_credentials_data_size", + "type": "INT64" + }, + { + "description": "The file size of the current profiles extension-store-permissions/data.safe.bin file, rounded to the nearest 10 kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_extension_store_permissions_data_size", + "type": "INT64" + }, + { + "description": "The total file size of the current profiles extensions metadata files, rounded to the nearest 10 kilobytes. Files included are:\n - extensions.json\n - extension-settings.json\n - extension-preferences.json\n - addonStartup.json.lz4\n", + "mode": "NULLABLE", + "name": "browser_backup_extensions_json_size", + "type": "INT64" + }, + { + "description": "The total size of all extensions storage directories, rounded to the nearest 10 kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_extensions_storage_size", + "type": "INT64" + }, + { + "description": "The total size of the current profiles extensions directory, rounded to the nearest 10 kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_extensions_xpi_directory_size", + "type": "INT64" + }, + { + "description": "The total file size of the favicons.sqlite db located in the current profile directory, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_favicons_size", + "type": "INT64" + }, + { + "description": "The file size of the formhistory.sqlite db located in the current profile directory, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_form_history_size", + "type": "INT64" + }, + { + "description": "1 = the default location, 2 = a non-default location\n", + "mode": "NULLABLE", + "name": "browser_backup_location_on_device", + "type": "INT64" + }, + { + "description": "The total size of files for telemetry, site storage, media device origin mapping, chrome privileged IndexedDB databases, and Mozilla Accounts in the current profile directory, rounded to the nearest tenth kilobyte.\n", + "mode": "NULLABLE", + "name": "browser_backup_misc_data_size", + "type": "INT64" + }, + { + "description": "The total file size of the places.sqlite db located in the current profile directory, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_places_size", + "type": "INT64" + }, + { + "description": "The total size of files relating to user preferences and permissions in the current profile directory, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_preferences_size", + "type": "INT64" + }, + { + "description": "The total disk space available on the storage device that the profile directory is stored on. To reduce fingerprintability, we round to the nearest 10 megabytes and return the result in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_prof_d_disk_space", + "type": "INT64" + }, + { + "description": "The total size of files needed for NSS initialization parameters and security certificate settings in the current profile directory, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_security_data_size", + "type": "INT64" + }, + { + "description": "The total size of the session store backups directory, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_session_store_backups_directory_size", + "type": "INT64" + }, + { + "description": "The size of uncompressed session store json, in kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_session_store_size", + "type": "INT64" + }, + { + "description": "The file size of the current profiles storage-sync-v2.sqlite db, rounded to the nearest 10 kilobytes.\n", + "mode": "NULLABLE", + "name": "browser_backup_storage_sync_size", + "type": "INT64" + }, + { + "description": "The count of maximum number of tabs open during a subsession, across all windows, including tabs in private windows and restored at startup. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_tab_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_tab_count", + "type": "INT64" + }, + { + "description": "The count of maximum number of pinned tabs open during a subsession. This includes private windows and the ones opened when starting the browser. Starting Firefox 85 this includes number of restored pinned tabs at startup. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_tab_pinned_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_tab_pinned_count", + "type": "INT64" + }, + { + "description": "The count of maximum number of tabs with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_vertical_tab_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_vertical_tab_count", + "type": "INT64" + }, + { + "description": "The count of maximum number of pinned tabs with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_vertical_tab_pinned_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_vertical_tab_pinned_count", + "type": "INT64" + }, + { + "description": "The count of maximum number of browser windows open during a subsession. This includes private windows and the ones opened when starting the browser. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_window_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_window_count", + "type": "INT64" + }, + { + "description": "Windows only count of the browser profiles on the current system. This\ncounts profiles that have been used across all Windows user accounts on\nmachine since this probe was added. The value persists across installs.\nA value of 0 is reported if there is an error determining the correct\ncount. Unset on other platforms.\n", + "mode": "NULLABLE", + "name": "browser_engagement_profile_count", + "type": "INT64" + }, + { + "description": "The duration of the session in milliseconds, excluding the time the device was suspended. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.session_time_excluding_suspend.\n", + "mode": "NULLABLE", + "name": "browser_engagement_session_time_excluding_suspend", + "type": "INT64" + }, + { + "description": "The duration of the session in milliseconds, including the time the device was suspended. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.session_time_including_suspend.\n", + "mode": "NULLABLE", + "name": "browser_engagement_session_time_including_suspend", + "type": "INT64" + }, + { + "description": "The count of the unique domains visited in a subsession, after the session has been restored. Subdomains under eTLD are aggregated after the first level (i.e. test.example.com and other.example.com are only counted once). This does not include background page requests and domains from embedded pages or private browsing. The count is limited to 100 unique domains. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.unique_domains_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_unique_domains_count", + "type": "INT64" + }, + { + "description": "Records the number of insecure (i.e., using http) OpenSearch search engines a given user has installed. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.insecure_opensearch_engine_count.\n", + "mode": "NULLABLE", + "name": "browser_searchinit_insecure_opensearch_engine_count", + "type": "INT64" + }, + { + "description": "Records the number of OpenSearch search engines with insecure updates enabled (i.e., using http) a given user has installed. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.insecure_opensearch_update_count.\n", + "mode": "NULLABLE", + "name": "browser_searchinit_insecure_opensearch_update_count", + "type": "INT64" + }, + { + "description": "Records the number of secure (i.e., using https) OpenSearch search engines a given user has installed. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.secure_opensearch_engine_count.\n", + "mode": "NULLABLE", + "name": "browser_searchinit_secure_opensearch_engine_count", + "type": "INT64" + }, + { + "description": "Records the number of OpenSearch search engines with secure updates enabled (i.e., using https) a given user has installed. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.secure_opensearch_update_count.\n", + "mode": "NULLABLE", + "name": "browser_searchinit_secure_opensearch_update_count", + "type": "INT64" + }, + { + "description": "How the about:home startup cache functioned on startup.\n0: Result value was never set (error case) 1: Cache did not exist 2: Cache page stream was corrupt / inaccessible 3: Cache script stream was corrupt / inaccessible 4: Cache was invalidated by a version bump 5: Cache was valid, but read too late to be useful. 6: Cache was valid and used. 7: Cache is disabled. 8: User did not load about:home on its own by default. 9: Cache is disabled because about:newtab preloading is disabled.\nThis metric was generated to correspond to the Legacy Telemetry scalar browser.startup.abouthome_cache_result.\n", + "mode": "NULLABLE", + "name": "browser_startup_abouthome_cache_result", + "type": "INT64" + }, + { + "description": "The time, in milliseconds, it took to complete the last shutdown. On successful shutdown, Telemetry saves this to disk into Telemetry.ShutdownTime.txt. On the next startup this is loaded and recorded. This metric was generated to correspond to the Legacy Telemetry scalar browser.timings.last_shutdown.\n", + "mode": "NULLABLE", + "name": "browser_timings_last_shutdown", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "The default_result pref that is set via enterprise policy.", + "mode": "NULLABLE", + "name": "content_analysis_default_result", + "type": "INT64" + }, + { + "description": "The timeout_result pref that is set via enterprise policy.", + "mode": "NULLABLE", + "name": "content_analysis_timeout_result", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "A count of how many \"session\" cookie exceptions a user has set. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.session_permission_exceptions.\n", + "mode": "NULLABLE", + "name": "datasanitization_session_permission_exceptions", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The most concurrent Picture-in-Picture players the user had open at any one time. This metric was generated to correspond to the Legacy Telemetry scalar pictureinpicture.most_concurrent_players.\n", + "mode": "NULLABLE", + "name": "pictureinpicture_most_concurrent_players", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "PLACES: Semantic History database wasted space in percentage (0-100)\n", + "mode": "NULLABLE", + "name": "places_database_semantic_history_wasted_percentage", + "type": "INT64" + }, + { + "description": "Number of pages that need a frecency recalculation. This metric was generated to correspond to the Legacy Telemetry scalar places.pages_need_frecency_recalculation.\n", + "mode": "NULLABLE", + "name": "places_pages_need_frecency_recalculation", + "type": "INT64" + }, + { + "description": "Number of history entries for the previous day. This metric was generated to correspond to the Legacy Telemetry scalar places.previousday_visits.\n", + "mode": "NULLABLE", + "name": "places_previousday_visits", + "type": "INT64" + }, + { + "description": "Max number of chunks of embeddings to calculate.\n", + "mode": "NULLABLE", + "name": "places_semantic_history_max_chunks_count", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The number of failed profile lock attempts that occurred prior to\nsuccessfully locking the profile and starting the app.\nPreviously collected in the \"main\" ping's `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "profile_lock_failed_lock_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "Measures user retention of the Global Privacy Control. 0 = never enabled, 1 = enabled, 2 = disabled (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.global_privacy_control_enabled.\n", + "mode": "NULLABLE", + "name": "security_global_privacy_control_enabled", + "type": "INT64" + }, + { + "description": "Measures user retention of the HTTPS-Only Mode. 0 = never enabled, 1 = enabled, 2 = disabled (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.https_only_mode_enabled.\n", + "mode": "NULLABLE", + "name": "security_https_only_mode_enabled", + "type": "INT64" + }, + { + "description": "Measures user retention of the HTTPS-Only Mode in Private Browsing. 0 = https-only never enabled in PBM, 1 = https-only enabled in PBM, 2 = https-only disabled in PBM (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.https_only_mode_enabled_pbm.\n", + "mode": "NULLABLE", + "name": "security_https_only_mode_enabled_pbm", + "type": "INT64" + }, + { + "description": "Width of the sidebar, in pixels.\n", + "mode": "NULLABLE", + "name": "sidebar_width", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "The time in seconds between the first browser window loading, and the time the OS started. This can give us an indication of whether starting the browser may have been the first thing the user did after starting their computer. This metric was generated to correspond to the Legacy Telemetry scalar startup.seconds_since_last_os_restart.\n", + "mode": "NULLABLE", + "name": "startup_seconds_since_last_os_restart", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "Records the number of saved tab groups present in the user's session\n", + "mode": "NULLABLE", + "name": "tabgroup_saved_groups", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n", + "mode": "NULLABLE", + "name": "termsofuse_version", + "type": "INT64" + }, + { + "description": "Record the timestamp of when the first about:home's Topsites are painted. Only records if about:home is set as the default homepage, and if sessions are not being restored by default. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.about_home_topsites_first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_about_home_topsites_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + }, + { + "description": "Count of currently installed web apps. Note that Firefox does not detect unpinning or deleting the shortcut outside of Firefox, so this could include web apps that the user has no way to access; see bug 1990342.\n", + "mode": "NULLABLE", + "name": "web_app_installed_web_app_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "A uint recording the number of times the address bar handleCommand fallback path is hit.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "urlbar_heuristic_result_missing", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "Only set if `browser.backup.enabled` is `false`. Possible reasons are \"nimbus\", \"pref\" (non-Nimbus), \"policy\", \"sanitizeOnShutdown\", \"selectable profiles\", \"os version\".\n", + "mode": "NULLABLE", + "name": "browser_backup_archive_disabled_reason", + "type": "STRING" + }, + { + "description": "Only set if `browser.backup.enabled` is `false`. Possible reasons are \"nimbus\", \"pref\" (non-Nimbus), \"policy\", \"managedProfiles\".\n", + "mode": "NULLABLE", + "name": "browser_backup_backup_disabled_reason", + "type": "STRING" + }, + { + "description": "Only set if `browser.backup.enabled` is `false`. Possible reasons are \"nimbus\", \"pref\" (non-Nimbus), \"policy\", \"sanitizeOnShutdown\", \"selectable profiles\".\n", + "mode": "NULLABLE", + "name": "browser_backup_restore_disabled_reason", + "type": "STRING" + }, + { + "description": "The name of the DLP agent that Firefox is connected to. This is set via enterprise policy.", + "mode": "NULLABLE", + "name": "content_analysis_agent_name", + "type": "STRING" + }, + { + "description": "The client_signature pref that is set via enterprise policy.", + "mode": "NULLABLE", + "name": "content_analysis_client_signature", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Which badges are shown in various surfaces (comma separated).\n", + "mode": "NULLABLE", + "name": "genai_chatbot_badges", + "type": "STRING" + }, + { + "description": "Indicates id of activated chatbot provider or \"custom\" or \"none\"\n", + "mode": "NULLABLE", + "name": "genai_chatbot_provider", + "type": "STRING" + }, + { + "description": "Records which type of shortcut the user selected for Link Previews (comma separated if more than one)\n", + "mode": "NULLABLE", + "name": "genai_linkpreview_shortcut", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "Only sent if unable to collect firstSeen data. Can have value \"NotFoundError\" if file not found or other values depending on the failure reason.\n", + "mode": "NULLABLE", + "name": "installation_first_seen_failure_reason", + "type": "STRING" + }, + { + "description": "The type of installer used to install Firefox. The value is one of \"stub\", \"full\", or \"msix\"\n", + "mode": "NULLABLE", + "name": "installation_first_seen_installer_type", + "type": "STRING" + }, + { + "description": "The application version installed by the installer (not necessarily the current version)\n", + "mode": "NULLABLE", + "name": "installation_first_seen_version", + "type": "STRING" + }, + { + "description": "Indicates what sources the OS is currently configured to allow apps to be installed from. Possible values are \"Anywhere\", \"Recommendations\", \"PreferStore\", \"StoreOnly\", \"NoSuchFeature\", or \"Error\". \"Recommendations\" allows installs from anywhere, but recommends a comparable app from the store, if available. \"NoSuchFeature\" will be reported on versions of Windows that do not have an app source setting. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.allowed_app_sources.\n", + "mode": "NULLABLE", + "name": "os_environment_allowed_app_sources", + "type": "STRING" + }, + { + "description": "Records how Firefox was started on Windows. Currently will be one of \"Desktop\", \"DesktopPrivate\", \"StartMenu\" (including pins), \"StartMenuPrivate\", \"Taskbar\", \"TaskbarPrivate\", \"OtherShortcut\", or \"Other\" This metric was generated to correspond to the Legacy Telemetry scalar os.environment.launch_method.\n", + "mode": "NULLABLE", + "name": "os_environment_launch_method", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "The display name of the user's default engine.\n", + "mode": "NULLABLE", + "name": "search_engine_default_display_name", + "type": "STRING" + }, + { + "description": "Deprecated in Fx139, please use provider_id, partner_code,\noverridden_by_third_party and display_name instead.\n\nThe telemetry id of the search engine.\nFor example: \"engine1\"\n\nFor application-provided engines, this is the identifier plus telemetry\nsuffix supplied by the configuration.\nFor other engines, this is `other-`.\n", + "mode": "NULLABLE", + "name": "search_engine_default_engine_id", + "type": "STRING" + }, + { + "description": "A path relating to where the search engine was installed/loaded from.\nFor example:\n `[app]appDefault` for a config search engine.\n `[addon]` for a WebExtension-based engine.\n `[https]developer.mozilla.org/mdn-web-docs.xml` for an OpenSearch-based\n engine.\n `[policy]` for an enteprise policy engine.\n `[user]` for a search engine defined by the user or generated from a\n web page.\nNote: this metric is truncated at 100 characters.\n", + "mode": "NULLABLE", + "name": "search_engine_default_load_path", + "type": "STRING" + }, + { + "description": "The partner code of the user's default search engine, if defined/known,\nthat is being used for the search. Not all search engines have partner\ncodes.\n\nMay be empty for engines that are overridden by a third-party add-on or\nOpenSearch engine.\n", + "mode": "NULLABLE", + "name": "search_engine_default_partner_code", + "type": "STRING" + }, + { + "description": "The identifier of the user's default search engine if the search engine is\nan application provided engine. For user installed engines, this value will\nbe `other`.\n", + "mode": "NULLABLE", + "name": "search_engine_default_provider_id", + "type": "STRING" + }, + { + "description": "The verified status of the search engine.\nFor application provided engines, this will always be `default`.\nFor other engines this will either be `verified` or `unverified` depending\non if the loadPathHash is valid.\n", + "mode": "NULLABLE", + "name": "search_engine_default_verified", + "type": "STRING" + }, + { + "description": "The display name of the user's default engine.\n\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_display_name", + "type": "STRING" + }, + { + "description": "Deprecated in Fx139, please use provider_id, partner_code,\noverridden_by_third_party and display_name instead.\n\nThe telemetry id of the search engine.\nFor example: \"engine1\"\n\nFor application-provided engines, this is the identifier plus telemetry\nsuffix supplied by the configuration.\nFor other engines, this is `other-`.\n\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_engine_id", + "type": "STRING" + }, + { + "description": "A path relating to where the search engine was installed/loaded from.\nFor example:\n `[app]appDefault` for a config search engine.\n `[addon]` for a WebExtension-based engine.\n `[https]developer.mozilla.org/mdn-web-docs.xml` for an OpenSearch-based\n engine.\n `[policy]` for an enteprise policy engine.\n `[user]` for a search engine defined by the user or generated from a\n web page.\nNote: this metric is truncated at 100 characters.\n\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_load_path", + "type": "STRING" + }, + { + "description": "The partner code of the user's default search engine, if defined/known,\nthat is being used for the search. Not all search engines have partner\ncodes.\n\nMay be empty for engines that are overridden by a third-party add-on or\nOpenSearch engine.\n", + "mode": "NULLABLE", + "name": "search_engine_private_partner_code", + "type": "STRING" + }, + { + "description": "The identifier of the user's default search engine if the search engine is\nan application provided engine. For user installed engines, this value will\nbe `other`.\n", + "mode": "NULLABLE", + "name": "search_engine_private_provider_id", + "type": "STRING" + }, + { + "description": "The verified status of the search engine.\nFor application provided engines, this will always be `default`.\nFor other engines this will either be `verified` or `unverified` depending\non if the loadPathHash is valid.\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_verified", + "type": "STRING" + }, + { + "description": "Setting for sidebar display (either \"always\", \"expand-on-hover\", or \"hide\").\n", + "mode": "NULLABLE", + "name": "sidebar_display_settings", + "type": "STRING" + }, + { + "description": "Setting for sidebar position (either \"left\" or \"right\").\n", + "mode": "NULLABLE", + "name": "sidebar_position_settings", + "type": "STRING" + }, + { + "description": "Setting for tabs orientation (either \"horizontal\" or \"vertical\").\n", + "mode": "NULLABLE", + "name": "sidebar_tabs_layout", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "The AppUpdatePin Enterprise Policy controls the maximum version that the browser can update to. If the policy is set, this probe will report the policy's value. The possible policy values are \"X.\" and \"X.Y.\", where X is the pinned major version and Y is the pinned minor version. This metric was generated to correspond to the Legacy Telemetry scalar update.version_pin.\n", + "mode": "NULLABLE", + "name": "update_version_pin", + "type": "STRING" + }, + { + "description": "The version of Gtk 3 in use. This metric was generated to correspond to the Legacy Telemetry scalar widget.gtk_version.\n", + "mode": "NULLABLE", + "name": "widget_gtk_version", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "background_update_reasons_to_not_update", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "browser_migration_matched_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "browser_migration_unmatched_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "content_analysis_interception_points_turned_off", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "windows_security_antispyware", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "windows_security_antivirus", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "windows_security_firewall", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The amount of time it took in milliseconds to produce the list of migrators and profiles for the first time the migration wizard opened during the process lifetime. This metric was generated to correspond to the Legacy Telemetry scalar migration.time_to_produce_migrator_list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "migration_time_to_produce_migrator_list", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "Firefox: Time to initialize the bookmarks toolbar view (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_BOOKMARKS_TOOLBAR_INIT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bookmarks_toolbar_init", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Total time, in milliseconds, required to back up a profile's favicons database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_backup_favicons_time", + "type": "RECORD" + }, + { + "description": "Total time, in milliseconds, required to back up a profile's places database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_backup_places_time", + "type": "RECORD" + }, + { + "description": "Total time elapsed, in milliseconds, between the start and end of the profile backup creation process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_backup_total_backup_time", + "type": "RECORD" + }, + { + "description": "How long (sec) a tab had been unloaded until it was reloaded.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TAB_UNLOAD_TO_RELOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_engagement_tab_unload_to_reload", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize the cache (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_cache", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize firefox cookies (ms). A subset of FX_SANITIZE_COOKIES.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_COOKIES_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_cookies", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize recent downloads (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_DOWNLOADS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_downloads", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize stored form data (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_FORMDATA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_formdata", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize history (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_HISTORY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_history", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize the open windows list (ms). On Android, this is the time it takes to close all open tabs (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_OPENWINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_openwindows", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize saved sessions (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_SESSIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_sessions", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize site-specific settings (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_SITESETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_sitesettings", + "type": "RECORD" + }, + { + "description": "Sanitize: Total time it takes to sanitize (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_total", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to run permitUnload on a browser during tab close to see whether or not we're allowed to close the tab (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLOSE_PERMIT_UNLOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_tabclose_permit_unload_time", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken from the point of closing a tab (with animation), to the browser element being removed from the DOM. (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLOSE_TIME_ANIM_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_tabclose_time_anim", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken from the point of closing a tab (without animation) to the browser element being removed from the DOM. (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLOSE_TIME_NO_ANIM_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_tabclose_time_no_anim", + "type": "RECORD" + }, + { + "description": "Firefox: If the spinner interstitial displays during tab switching, records the time in ms the graphic is visible\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_SWITCH_SPINNER_VISIBLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_tabswitch_spinner_visible", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms between tab selection and tab content paint in e10s windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_SWITCH_TOTAL_E10S_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_tabswitch_total", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent updating UI in response to a tab switch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_SWITCH_UPDATE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_tabswitch_update", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The time content uses to enter/exit fullscreen regardless of fullscreen transition timeout\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_CHANGE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fullscreen_change", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "PLACES: Time to load the sidebar history tree sorted by last visit (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HISTORY_LASTVISITED_TREE_QUERY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "history_sidebar_lastvisited_tree_query_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "PLACES: Time to search the history library (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_HISTORY_LIBRARY_SEARCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "library_history_search_time", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent selecting and matching messages to user profile.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MS_MESSAGE_REQUEST_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "messaging_system_message_request_time", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "The length of time (in milliseconds) that it takes for the cache worker to generate the cache and return it to the main thread\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_ABOUTHOME_CACHE_CONSTRUCTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "newtab_abouthome_cache_construction", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "Time between tab selection and first composite of the tab content onto the screen. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_tab_switch_composite", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a video was in Picture-in-Picture mode in a background tab.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_PICTURE_IN_PICTURE_BACKGROUND_TAB_PLAYING_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pictureinpicture_background_tab_playing_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a video was in Picture-in-Picture mode in a foreground tab.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_PICTURE_IN_PICTURE_FOREGROUND_TAB_PLAYING_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pictureinpicture_foreground_tab_playing_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a Picture-in-Picture window was open.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_PICTURE_IN_PICTURE_WINDOW_OPEN_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pictureinpicture_window_open_duration", + "type": "RECORD" + }, + { + "description": "PLACES: Time to build the bookmarks tree\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_BACKUPS_BOOKMARKSTREE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_backups_bookmarkstree", + "type": "RECORD" + }, + { + "description": "PLACES: Days from last backup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PLACES_BACKUPS_DAYSFROMLAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_backups_daysfromlast", + "type": "RECORD" + }, + { + "description": "PLACES: Time to convert and write the backup\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_BACKUPS_TOJSON_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_backups_tojson", + "type": "RECORD" + }, + { + "description": "PLACES: Time to defragment the semantic database (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_database_semantic_history_defragment_time", + "type": "RECORD" + }, + { + "description": "PLACES: Time to convert and write bookmarks.html\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_EXPORT_TOHTML_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_export_tohtml", + "type": "RECORD" + }, + { + "description": "PLACES: Time to recalculate frecency for a chunk of pages (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_FRECENCY_RECALC_CHUNK_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_frecency_recalc_chunk_time", + "type": "RECORD" + }, + { + "description": "PLACES: Time to decay all frecencies values on idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_IDLE_FRECENCY_DECAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_idle_frecency_decay_time", + "type": "RECORD" + }, + { + "description": "PLACES: Time to execute maintenance tasks on idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_IDLE_MAINTENANCE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_idle_maintenance_time", + "type": "RECORD" + }, + { + "description": "PLACES: Days from last maintenance\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_MAINTENANCE_DAYSFROMLAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_maintenance_daysfromlast", + "type": "RECORD" + }, + { + "description": "PLACES: the most recent expired visit in days\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PLACES_MOST_RECENT_EXPIRED_VISIT_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_most_recent_expired_visit", + "type": "RECORD" + }, + { + "description": "Time to calculate a chunk of embeddings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_semantic_history_chunk_calculate_time", + "type": "RECORD" + }, + { + "description": "Time to find URLs to calculate embeddings for.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_semantic_history_find_chunks_time", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "Record the duration (in ms) of a successful classification.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "relevancy_classify_duration", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "The time duration it takes for the search service to start up.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "search_service_startup_time", + "type": "RECORD" + }, + { + "description": "The time it takes to categorize elements on a SERP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "serp_categorization_duration", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "Session restore: If the browser is setup to auto-restore tabs, this probe measures the time elapsed between the instant we start Session Restore and the instant we have finished restoring tabs eagerly. At this stage, the tabs that are restored on demand are not restored yet.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_AUTO_RESTORE_DURATION_UNTIL_EAGER_TABS_RESTORED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_auto_restore_duration_until_eager_tabs_restored", + "type": "RECORD" + }, + { + "description": "Session restore: Time to collect all window data (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_COLLECT_ALL_WINDOWS_DATA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_collect_all_windows_data", + "type": "RECORD" + }, + { + "description": "Session restore: Time to collect all window and tab data (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_COLLECT_DATA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_collect_data", + "type": "RECORD" + }, + { + "description": "Session restore: Duration of session history collection in the parent process (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_COLLECT_SESSION_HISTORY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_collect_session_history", + "type": "RECORD" + }, + { + "description": "Session restore: If a session is restored by the user clicking on 'Restore Session', this probe measures the time elapsed between the instant the user has clicked and the instant we have finished restoring tabs eagerly. At this stage, the tabs that are restored on demand are not restored yet.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_MANUAL_RESTORE_DURATION_UNTIL_EAGER_TABS_RESTORED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_manual_restore_duration_until_eager_tabs_restored", + "type": "RECORD" + }, + { + "description": "Session restore: Time to read the session data from the file on disk (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_READ_FILE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_read_file", + "type": "RECORD" + }, + { + "description": "Session restore: Time spent blocking the main thread while restoring a window state (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_RESTORE_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_restore_window", + "type": "RECORD" + }, + { + "description": "Session restore: Time it takes to prepare the data structures for restoring a session (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_STARTUP_INIT_SESSION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_startup_init_session", + "type": "RECORD" + }, + { + "description": "Session restore: Time it takes to finish restoration once we have first opened a window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_STARTUP_ONLOAD_INITIAL_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_startup_onload_initial_window", + "type": "RECORD" + }, + { + "description": "Session restore: Time to write the session data to the file on disk (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SESSION_RESTORE_WRITE_FILE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "session_restore_write_file", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for checking if the archive is over-quota\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_CHECKING_OVER_QUOTA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_checking_over_quota", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for evicting old directories\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_EVICTING_DIRS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_evicting_dirs", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for evicting over-quota pings\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_EVICTING_OVER_QUOTA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_evicting_over_quota", + "type": "RECORD" + }, + { + "description": "Time taken to compress telemetry object (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_COMPRESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_compress", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for checking if the pending pings are over-quota\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_PENDING_CHECKING_OVER_QUOTA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_checking_over_quota", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for evicting over-quota pending pings\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_PENDING_EVICTING_OVER_QUOTA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_evicting_over_quota", + "type": "RECORD" + }, + { + "description": "The age, in days, of the pending pings.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_PENDING_PINGS_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_pings_age", + "type": "RECORD" + }, + { + "description": "Time needed (in ms) for a failed send of a Telemetry ping to the servers and getting a reply back.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_SEND_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed (in ms) for a successful send of a Telemetry ping to the servers and getting a reply back.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_SEND_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_send_success", + "type": "RECORD" + }, + { + "description": "Time to stringify telemetry object (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_STRINGIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_stringify", + "type": "RECORD" + }, + { + "description": "The milliseconds of time the text recognition results took to display, including the UI time and OS response time.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TEXT_RECOGNITION_API_PERFORMANCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "text_recognition_api_performance", + "type": "RECORD" + }, + { + "description": "The milliseconds of time that a user viewed the text results.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TEXT_RECOGNITION_INTERACTION_TIMING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "text_recognition_interaction_timing", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "PLACES: Time for first autocomplete result if > 50ms (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_AUTOCOMPLETE_1ST_RESULT_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlbar_autocomplete_first_result_time", + "type": "RECORD" + }, + { + "description": "PLACES: Time for the 6 first autocomplete results (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PLACES_AUTOCOMPLETE_6_FIRST_RESULTS_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlbar_autocomplete_sixth_result_time", + "type": "RECORD" + }, + { + "description": "Counts how long each successful ingest takes in the Firefox Suggest Rust component. Ingests that fail for whatever reason are not included.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlbar_quick_suggest_ingest_time", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time that the user has the Taskbar Tab focused.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "web_app_usage_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The submission URL of the default engine. This is only reported in the\ncases where:\n The engine is an application provided engine.\n The engine has the same name as an application provided engine.\n The engine matches one of a specific list of well known search engines.\n", + "mode": "NULLABLE", + "name": "search_engine_default_submission_url", + "type": "STRING" + }, + { + "description": "The submission URL of the default engine. This is only reported in the\ncases where:\n The engine is an application provided engine.\n The engine has the same name as an application provided engine.\n The engine matches one of a specific list of well known search engines.\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_submission_url", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "url2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nValue may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0`\nin pings near when the data upload pref is disabled (if Telemetry gets\nto go first), or between when a client_id has been removed and when it\nhas been regenerated.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_client_id", + "type": "STRING" + }, + { + "description": "The profile_group_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_profile_group_id", + "type": "STRING" + }, + { + "description": "Legacy Telemetry's session identifier.\nSet near startup and stable until shutdown.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_session_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop/metrics/metrics.2.schema.json b/schemas/firefox-desktop/metrics/metrics.2.schema.json new file mode 100644 index 000000000..661934a9f --- /dev/null +++ b/schemas/firefox-desktop/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop/new-metric-capture-emulation/new-metric-capture-emulation.2.bq b/schemas/firefox-desktop/new-metric-capture-emulation/new-metric-capture-emulation.2.bq new file mode 100644 index 000000000..46fd9c94a --- /dev/null +++ b/schemas/firefox-desktop/new-metric-capture-emulation/new-metric-capture-emulation.2.bq @@ -0,0 +1,642 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of five-second intervals ('ticks') the user was considered\n'active'.\n\n'active' means keyboard or mouse interaction with the application.\nIt doesn't take into account whether or not the window has focus or is in\nthe foreground, only if it is receiving these interaction events.\n\nMigrated from Telemetry's `browser.engagement.active_ticks`.\n", + "mode": "NULLABLE", + "name": "browser_engagement_active_ticks", + "type": "INT64" + }, + { + "description": "The number of total non-unique http(s) URIs visited, including page\nreloads, after the session has been restored. URIs on minimized or\nbackground tabs may also be counted. Private browsing uris are included.\n\nMigrated from Telemetry's\n`browser.engagement.total_uri_count_normal_and_private_mode`.\n", + "mode": "NULLABLE", + "name": "browser_engagement_uri_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop/new-metric-capture-emulation/new-metric-capture-emulation.2.schema.json b/schemas/firefox-desktop/new-metric-capture-emulation/new-metric-capture-emulation.2.schema.json new file mode 100644 index 000000000..ec50e92a7 --- /dev/null +++ b/schemas/firefox-desktop/new-metric-capture-emulation/new-metric-capture-emulation.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop", + "bq_metadata_format":"structured", + "bq_table":"new_metric_capture_emulation_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop/pseudo-main/pseudo-main.2.bq b/schemas/firefox-desktop/pseudo-main/pseudo-main.2.bq new file mode 100644 index 000000000..3b004dba1 --- /dev/null +++ b/schemas/firefox-desktop/pseudo-main/pseudo-main.2.bq @@ -0,0 +1,649 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The `profileSubsessionCounter` from the Legacy Telemetry \"main\" ping.\nThis is a value that monotonically increases once for every \"main\" ping\nthat has been submitted.\nIt is a sequence number by a longer name.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_profile_subsession_counter", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nValue may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0`\nin pings near when the data upload pref is disabled (if Telemetry gets\nto go first), or between when a client_id has been removed and when it\nhas been regenerated.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop/pseudo-main/pseudo-main.2.schema.json b/schemas/firefox-desktop/pseudo-main/pseudo-main.2.schema.json new file mode 100644 index 000000000..5659b03b6 --- /dev/null +++ b/schemas/firefox-desktop/pseudo-main/pseudo-main.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop", + "bq_metadata_format":"structured", + "bq_table":"pseudo_main_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/firefox-desktop/sync/sync.2.bq b/schemas/firefox-desktop/sync/sync.2.bq new file mode 100644 index 000000000..33a147412 --- /dev/null +++ b/schemas/firefox-desktop/sync/sync.2.bq @@ -0,0 +1,800 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "When the sync telemetry session begins (the `SyncTelemetryImpl`\nconstructor runs).\nTypically useful for ordering \"sync\" pings.\n", + "mode": "NULLABLE", + "name": "syncs_session_start_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The application-services developers are in the process of oxidizing parts\nof firefox sync and the related data storage code,\nwhich typically requires migrating the old storage into a new database and/or format.\n\nWhen a migration like this occurs,\na record is reported in this list the next time the sync ping is submitted.\n\n```text\n [{\n migration_type: Presently this is only ever \"webext-storage\",\n entries: The number of entries/preferences in the source (legacy) database, including ones we failed to read,\n entriesSuccessful: he number of entries/preferences (see below) which we have successfully migrated into the destination database,\n extensions: The number of distinct extensions which have at least one preference in the source (legacy) database,\n extensionsSuccessful: The number of distinct extensions which have at least one preference in the destination (migrated) database,\n openFailure: A boolean flag that is true if we hit a read error prior to . This likely indicates complete corruptio", + "mode": "NULLABLE", + "name": "syncs_migrations", + "type": "JSON" + }, + { + "description": "Recorded syncs.\nThe \"sync\" ping is not submitted if this is empty.\n```text\n [{\n when: integer ms since epoch,\n took: integer ms duration,\n didLogin: true if first sync after login,\n why:\n - \"startup\" if first sync after browser startup\n - \"schedule\" if it's been too long since the last sync\n - \"score\" if one of sync's trackers has a high score value indicating many changes since the last sync\n - \"user\" if the user manually triggered the sync\n - \"tabs\" if the user opened the synced tabs sidebar, triggering a sync\n failureReason: { // if there was an error\n name: {\"httperror\"|\"networkerror\"|...},\n code: error code for \"httperror\" and \"networkerror\" only,\n error: error string for \"othererror\" and \"unexpectederror\" only,\n from: for \"autherror\" only,\n },\n devices: [{ // excluded if we couldn't get a valid uid or local device id\n os: provided by `Services.appinfo.OS`,\n version: provided by `Services.appinfo.version`,\n id: hashed FxA d", + "mode": "NULLABLE", + "name": "syncs_syncs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How many syncs happened which were not reported in detail\ndue to being over the number of syncs we report detailed information for.\n", + "mode": "NULLABLE", + "name": "syncs_discarded", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "Hashed FxA device ID, hex string of 64 characters.\nNot included if the user is not logged in.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_device_id", + "type": "STRING" + }, + { + "description": "Hashed FxA unique ID, or string of 32 zeroes.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_fxa_uid", + "type": "STRING" + }, + { + "description": "The \"node type\" as reported by the token server.\nThis will not change from sync to sync.\nMay not be present if the token server omits this information.\n", + "mode": "NULLABLE", + "name": "syncs_sync_node_type", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/firefox-desktop/sync/sync.2.schema.json b/schemas/firefox-desktop/sync/sync.2.schema.json new file mode 100644 index 000000000..5ad24eedd --- /dev/null +++ b/schemas/firefox-desktop/sync/sync.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"firefox_desktop", + "bq_metadata_format":"structured", + "bq_table":"sync_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":false, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/monitor-cirrus/health/health.2.bq b/schemas/monitor-cirrus/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/monitor-cirrus/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/monitor-cirrus/health/health.2.schema.json b/schemas/monitor-cirrus/health/health.2.schema.json new file mode 100644 index 000000000..abac544c8 --- /dev/null +++ b/schemas/monitor-cirrus/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"monitor_cirrus", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/monitor-cirrus/metrics/metrics.2.bq b/schemas/monitor-cirrus/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/monitor-cirrus/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/monitor-cirrus/metrics/metrics.2.schema.json b/schemas/monitor-cirrus/metrics/metrics.2.schema.json new file mode 100644 index 000000000..8f710f7c4 --- /dev/null +++ b/schemas/monitor-cirrus/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"monitor_cirrus", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozilla-lockbox/health/health.2.bq b/schemas/mozilla-lockbox/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/mozilla-lockbox/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozilla-lockbox/health/health.2.schema.json b/schemas/mozilla-lockbox/health/health.2.schema.json new file mode 100644 index 000000000..2b8dffd91 --- /dev/null +++ b/schemas/mozilla-lockbox/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozilla_lockbox", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozilla-lockbox/metrics/metrics.2.bq b/schemas/mozilla-lockbox/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/mozilla-lockbox/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozilla-lockbox/metrics/metrics.2.schema.json b/schemas/mozilla-lockbox/metrics/metrics.2.schema.json new file mode 100644 index 000000000..35f162940 --- /dev/null +++ b/schemas/mozilla-lockbox/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozilla_lockbox", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozilla-mach/health/health.2.bq b/schemas/mozilla-mach/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/mozilla-mach/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozilla-mach/health/health.2.schema.json b/schemas/mozilla-mach/health/health.2.schema.json new file mode 100644 index 000000000..74225921f --- /dev/null +++ b/schemas/mozilla-mach/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozilla_mach", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":1130 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozilla-mach/metrics/metrics.2.bq b/schemas/mozilla-mach/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/mozilla-mach/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozilla-mach/metrics/metrics.2.schema.json b/schemas/mozilla-mach/metrics/metrics.2.schema.json new file mode 100644 index 000000000..71c23a7d3 --- /dev/null +++ b/schemas/mozilla-mach/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozilla_mach", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":10000 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozilla-mach/usage/usage.2.bq b/schemas/mozilla-mach/usage/usage.2.bq new file mode 100644 index 000000000..269f4d32b --- /dev/null +++ b/schemas/mozilla-mach/usage/usage.2.bq @@ -0,0 +1,1041 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if this command is being run on Mozilla Automation/CI", + "mode": "NULLABLE", + "name": "mach_moz_automation", + "type": "BOOL" + }, + { + "description": "True if the mach invocation succeeded.", + "mode": "NULLABLE", + "name": "mach_success", + "type": "BOOL" + }, + { + "description": "True if CrowdStrike security software is running.", + "mode": "NULLABLE", + "name": "mach_system_crowdstrike_running", + "type": "BOOL" + }, + { + "description": "True if FleetDM endpoint management tool is running.", + "mode": "NULLABLE", + "name": "mach_system_fleet_running", + "type": "BOOL" + }, + { + "description": "True if the current shell is a remote SSH connection.", + "mode": "NULLABLE", + "name": "mach_system_ssh_connection", + "type": "BOOL" + }, + { + "description": "True if there is an instance of vscode running.", + "mode": "NULLABLE", + "name": "mach_system_vscode_running", + "type": "BOOL" + }, + { + "description": "True if the current terminal is opened via Visual Studio Code.", + "mode": "NULLABLE", + "name": "mach_system_vscode_terminal", + "type": "BOOL" + }, + { + "description": "True if `--enable-artifact-builds`.", + "mode": "NULLABLE", + "name": "mozbuild_artifact", + "type": "BOOL" + }, + { + "description": "True if `--with-ccache`.", + "mode": "NULLABLE", + "name": "mozbuild_ccache", + "type": "BOOL" + }, + { + "description": "True if the build was a clobber/full build.", + "mode": "NULLABLE", + "name": "mozbuild_clobber", + "type": "BOOL" + }, + { + "description": "True if `--enable-debug`.", + "mode": "NULLABLE", + "name": "mozbuild_debug", + "type": "BOOL" + }, + { + "description": "True if icecream in use.", + "mode": "NULLABLE", + "name": "mozbuild_icecream", + "type": "BOOL" + }, + { + "description": "True if `--enable-optimize`.", + "mode": "NULLABLE", + "name": "mozbuild_opt", + "type": "BOOL" + }, + { + "description": "True if ccache in use is sccache.", + "mode": "NULLABLE", + "name": "mozbuild_sccache", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of logical CPU cores present.", + "mode": "NULLABLE", + "name": "mach_system_logical_cores", + "type": "INT64" + }, + { + "description": "Number of physical CPU cores present.", + "mode": "NULLABLE", + "name": "mach_system_physical_cores", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Amount of system memory.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mach_system_memory", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The name of the mach command that was invoked, such as \"build\", \"doc\", or \"try\".\n", + "mode": "NULLABLE", + "name": "mach_command", + "type": "STRING" + }, + { + "description": "CPU brand string from CPUID.", + "mode": "NULLABLE", + "name": "mach_system_cpu_brand", + "type": "STRING" + }, + { + "description": "The name of the operating system distribution.", + "mode": "NULLABLE", + "name": "mach_system_distro", + "type": "STRING" + }, + { + "description": "The high-level OS version.", + "mode": "NULLABLE", + "name": "mach_system_distro_version", + "type": "STRING" + }, + { + "description": "The compiler type in use (CC_TYPE), such as \"clang\" or \"gcc\".", + "mode": "NULLABLE", + "name": "mozbuild_compiler", + "type": "STRING" + }, + { + "description": "The project being built.", + "mode": "NULLABLE", + "name": "mozbuild_project", + "type": "STRING" + }, + { + "description": "The target architecture for the build, such as \"x86_64-pc-mingw32\".", + "mode": "NULLABLE", + "name": "mozbuild_target", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "mach_argv", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How long it took for the command to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mach_duration", + "type": "RECORD" + }, + { + "description": "How long it took for the artifact tier of the build to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozbuild_tier_artifact_duration", + "type": "RECORD" + }, + { + "description": "How long it took for the compile tier of the build to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozbuild_tier_compile_duration", + "type": "RECORD" + }, + { + "description": "How long it took for the configure tier of the build to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozbuild_tier_configure_duration", + "type": "RECORD" + }, + { + "description": "How long it took for the export tier of the build to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozbuild_tier_export_duration", + "type": "RECORD" + }, + { + "description": "How long it took for the libs tier of the build to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozbuild_tier_libs_duration", + "type": "RECORD" + }, + { + "description": "How long it took for the misc tier of the build to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozbuild_tier_misc_duration", + "type": "RECORD" + }, + { + "description": "How long it took for the pre-export tier of the build to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozbuild_tier_pre_export_duration", + "type": "RECORD" + }, + { + "description": "How long it took for the tools tier of the build to complete.", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozbuild_tier_tools_duration", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozilla-mach/usage/usage.2.schema.json b/schemas/mozilla-mach/usage/usage.2.schema.json new file mode 100644 index 000000000..6632b6e17 --- /dev/null +++ b/schemas/mozilla-mach/usage/usage.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozilla_mach", + "bq_metadata_format":"structured", + "bq_table":"usage_v1", + "expiration_policy":{ + "delete_after_days":10000 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozillavpn-backend-cirrus/health/health.2.bq b/schemas/mozillavpn-backend-cirrus/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/mozillavpn-backend-cirrus/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozillavpn-backend-cirrus/health/health.2.schema.json b/schemas/mozillavpn-backend-cirrus/health/health.2.schema.json new file mode 100644 index 000000000..ea7dbcd67 --- /dev/null +++ b/schemas/mozillavpn-backend-cirrus/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozillavpn_backend_cirrus", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozillavpn-backend-cirrus/metrics/metrics.2.bq b/schemas/mozillavpn-backend-cirrus/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/mozillavpn-backend-cirrus/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozillavpn-backend-cirrus/metrics/metrics.2.schema.json b/schemas/mozillavpn-backend-cirrus/metrics/metrics.2.schema.json new file mode 100644 index 000000000..a684d286f --- /dev/null +++ b/schemas/mozillavpn-backend-cirrus/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozillavpn_backend_cirrus", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozillavpn/daemonsession/daemonsession.2.bq b/schemas/mozillavpn/daemonsession/daemonsession.2.bq new file mode 100644 index 000000000..6ee17d5f7 --- /dev/null +++ b/schemas/mozillavpn/daemonsession/daemonsession.2.bq @@ -0,0 +1,874 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if the VPN server's country is the same as the user's actual country.\nWhen using multihop, the exit server is used.", + "mode": "NULLABLE", + "name": "session_server_in_same_country", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count of times that the connection health check results\nin no signal.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_no_signal_count", + "type": "INT64" + }, + { + "description": "(iOS only) Count of times that the connection health check is in pending.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_pending_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_stable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check results\nin unstable.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_unstable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\nCollected only on mobile apps.\n", + "mode": "NULLABLE", + "name": "session_connection_health_stable_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of data received through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_rx", + "type": "RECORD" + }, + { + "description": "The amount of data sent through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_tx", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "(Mobile-only) The time the user ends a VPN session from the daemon or\nnetwork extension\n", + "mode": "NULLABLE", + "name": "session_daemon_session_end", + "type": "STRING" + }, + { + "description": "(Mobile-only) The time the user starts a VPN session from the daemon or\nnetwork extension\n", + "mode": "NULLABLE", + "name": "session_daemon_session_start", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "(Mobile-only) Where the VPN session started from, to determine how many\nsessions start outside the app. Values should be \"app\" or \"system\".\n\"system\" covers cases like system settings, autostart on boot, tile, etc.\n", + "mode": "NULLABLE", + "name": "session_daemon_session_source", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent in no signal state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_no_signal_time", + "type": "RECORD" + }, + { + "description": "(iOS only) Time spent in pending state.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_pending_time", + "type": "RECORD" + }, + { + "description": "Time spent in stable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_stable_time", + "type": "RECORD" + }, + { + "description": "Time spent in unstable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_unstable_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "(Mobile-only) A unique identifier for each session.\nThis is used to connect unique VPN sessions across pings, and as a safety\ncheck on edge cases of VPN activation/deactivation, such as a session\nbeing started/ended from mobile system settings.\n", + "mode": "NULLABLE", + "name": "session_daemon_session_id", + "type": "STRING" + }, + { + "description": "A unique identifier to connect the app and daemon Glean instances.\n", + "mode": "NULLABLE", + "name": "session_installation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozillavpn/daemonsession/daemonsession.2.schema.json b/schemas/mozillavpn/daemonsession/daemonsession.2.schema.json new file mode 100644 index 000000000..23ec79b31 --- /dev/null +++ b/schemas/mozillavpn/daemonsession/daemonsession.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozillavpn", + "bq_metadata_format":"structured", + "bq_table":"daemonsession_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozillavpn/health/health.2.bq b/schemas/mozillavpn/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/mozillavpn/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozillavpn/health/health.2.schema.json b/schemas/mozillavpn/health/health.2.schema.json new file mode 100644 index 000000000..5abcb96df --- /dev/null +++ b/schemas/mozillavpn/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozillavpn", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozillavpn/main/main.2.bq b/schemas/mozillavpn/main/main.2.bq new file mode 100644 index 000000000..2cac42ea1 --- /dev/null +++ b/schemas/mozillavpn/main/main.2.bq @@ -0,0 +1,746 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The status of whether the VPN is activated on device start\n", + "mode": "NULLABLE", + "name": "settings_connect_on_startup_active", + "type": "BOOL" + }, + { + "description": "True if the client is set to use the system theme, false if not.\n", + "mode": "NULLABLE", + "name": "settings_is_using_system_theme", + "type": "BOOL" + }, + { + "description": "True if the client is displaying dark mode, false if it's displaying\nlight mode. This is recorded whether the mode was manually selected by\nthe user or whether it was used because \"use system theme\" was true.\n", + "mode": "NULLABLE", + "name": "settings_using_dark_mode", + "type": "BOOL" + }, + { + "description": "Status of whether app is being used in language of the operating system\n", + "mode": "NULLABLE", + "name": "settings_using_system_language", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time the app took between starting and rendering the main screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_main_screen", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozillavpn/main/main.2.schema.json b/schemas/mozillavpn/main/main.2.schema.json new file mode 100644 index 000000000..068eb109f --- /dev/null +++ b/schemas/mozillavpn/main/main.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozillavpn", + "bq_metadata_format":"structured", + "bq_table":"main_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozillavpn/metrics/metrics.2.bq b/schemas/mozillavpn/metrics/metrics.2.bq new file mode 100644 index 000000000..3f1e41608 --- /dev/null +++ b/schemas/mozillavpn/metrics/metrics.2.bq @@ -0,0 +1,999 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The status of whether the VPN is activated on device start\n", + "mode": "NULLABLE", + "name": "settings_connect_on_startup_active", + "type": "BOOL" + }, + { + "description": "Status of whether app is being used in language of the operating system\n", + "mode": "NULLABLE", + "name": "settings_using_system_language", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "The time the app took between starting and rendering the main screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_main_screen", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozillavpn/metrics/metrics.2.schema.json b/schemas/mozillavpn/metrics/metrics.2.schema.json new file mode 100644 index 000000000..9a157b8aa --- /dev/null +++ b/schemas/mozillavpn/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozillavpn", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozillavpn/vpnsession/vpnsession.2.bq b/schemas/mozillavpn/vpnsession/vpnsession.2.bq new file mode 100644 index 000000000..e7012dfe9 --- /dev/null +++ b/schemas/mozillavpn/vpnsession/vpnsession.2.bq @@ -0,0 +1,851 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if the VPN server's country is the same as the user's actual country.\nWhen using multihop, the exit server is used.", + "mode": "NULLABLE", + "name": "session_server_in_same_country", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count of times that the connection health check results\nin no signal.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_no_signal_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_stable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check results\nin unstable.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_unstable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\nCollected only on mobile apps.\n", + "mode": "NULLABLE", + "name": "session_connection_health_stable_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of data received through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_rx", + "type": "RECORD" + }, + { + "description": "The amount of data sent through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_tx", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time the user ends a VPN session from the app\n", + "mode": "NULLABLE", + "name": "session_session_end", + "type": "STRING" + }, + { + "description": "The time the user starts a VPN session from the app\n", + "mode": "NULLABLE", + "name": "session_session_start", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of apps the user is excluding from the VPN tunnel\n", + "mode": "NULLABLE", + "name": "session_apps_excluded", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The type of DNS a user has active:\n- NoCustomDNSAvailable: Custom DNS app feature isn't available\n- Default: App's default DNS server\n- Custom: User has provided a custom valid IP address for their DNS\n- BlockAds: One of app's privacy DNS options\n- BlockTrackers: One of app's privacy DNS options\n- BlockAdsAndTrackers: One of app's privacy DNS options\n- BlockMalware: One of app's privacy DNS options\n- BlockMalwareAndAds: One of app's privacy DNS options\n- BlockMalwareAndTrackers: One of app's privacy DNS options\n- BlockMalwareAndAdsAndTrackers: One of app's privacy DNS options\n", + "mode": "NULLABLE", + "name": "session_dns_type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent in no signal state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_no_signal_time", + "type": "RECORD" + }, + { + "description": "Time spent in stable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_stable_time", + "type": "RECORD" + }, + { + "description": "Time spent in unstable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_unstable_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A unique identifier to connect the app and daemon Glean instances.\n", + "mode": "NULLABLE", + "name": "session_installation_id", + "type": "STRING" + }, + { + "description": "A unique identifier for each session. This is used to connect unique VPN\nsessions across pings, and as a safety check on edge cases of VPN\nactivation/deactivation, such as a session being started/ended from mobile\nsystem settings.\n", + "mode": "NULLABLE", + "name": "session_session_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozillavpn/vpnsession/vpnsession.2.schema.json b/schemas/mozillavpn/vpnsession/vpnsession.2.schema.json new file mode 100644 index 000000000..8dbdb6a85 --- /dev/null +++ b/schemas/mozillavpn/vpnsession/vpnsession.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozillavpn", + "bq_metadata_format":"structured", + "bq_table":"vpnsession_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozphab/health/health.2.bq b/schemas/mozphab/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/mozphab/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozphab/health/health.2.schema.json b/schemas/mozphab/health/health.2.schema.json new file mode 100644 index 000000000..fc4a4279d --- /dev/null +++ b/schemas/mozphab/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozphab", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":1130 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozphab/metrics/metrics.2.bq b/schemas/mozphab/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/mozphab/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozphab/metrics/metrics.2.schema.json b/schemas/mozphab/metrics/metrics.2.schema.json new file mode 100644 index 000000000..c8102820e --- /dev/null +++ b/schemas/mozphab/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozphab", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":10000 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/mozphab/usage/usage.2.bq b/schemas/mozphab/usage/usage.2.bq new file mode 100644 index 000000000..aacdf1dc3 --- /dev/null +++ b/schemas/mozphab/usage/usage.2.bq @@ -0,0 +1,863 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if MozPhab was forced to use Arcanist\n", + "mode": "NULLABLE", + "name": "mozphab_usage_arcanist", + "type": "BOOL" + }, + { + "description": "True if a --force switch was used to override validation\n", + "mode": "NULLABLE", + "name": "mozphab_usage_override_switch", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A total number of commits in the stack.\n", + "mode": "NULLABLE", + "name": "mozphab_submission_commits_count", + "type": "INT64" + }, + { + "description": "A total number of files submitted.\n", + "mode": "NULLABLE", + "name": "mozphab_submission_files_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A distributed size of all files in the submitted stack\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mozphab_submission_files_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "Version number of the Operating System or distribution name and version for Linux.\n", + "mode": "NULLABLE", + "name": "mozphab_environment_distribution_version", + "type": "STRING" + }, + { + "description": "Python version\n", + "mode": "NULLABLE", + "name": "mozphab_environment_python_version", + "type": "STRING" + }, + { + "description": "Name of the underlying version control system\n", + "mode": "NULLABLE", + "name": "mozphab_environment_vcs_name", + "type": "STRING" + }, + { + "description": "Version of the underlying version control system\n", + "mode": "NULLABLE", + "name": "mozphab_environment_vcs_version", + "type": "STRING" + }, + { + "description": "Command used to run MozPhab, e.g. `submit` or `patch`.\n", + "mode": "NULLABLE", + "name": "mozphab_usage_command", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent on preparing the commit stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozphab_submission_preparation_time", + "type": "RECORD" + }, + { + "description": "Time spent on performing the submission. This metric will be null if the users decides to discontinue submission process after the preparation step.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozphab_submission_process_time", + "type": "RECORD" + }, + { + "description": "Time spent on performing the command\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "mozphab_usage_command_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unique identifier of each MozPhab user. The default `client_id` will change if the user would delete the `telemetry-data` directory. The `user.id` metric is created by hashing the email, which will be the same for all MozPhab installations.\nWe store the user identification in a file that is updated every week. We want to change the `user.id` metric when the user changes an email.\n", + "mode": "NULLABLE", + "name": "mozphab_user_id", + "type": "STRING" + }, + { + "description": "Unique identifier of each MozPhab installation. A user might install the application on multiple machines/profiles.\n", + "mode": "NULLABLE", + "name": "mozphab_user_installation", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/mozphab/usage/usage.2.schema.json b/schemas/mozphab/usage/usage.2.schema.json new file mode 100644 index 000000000..afdcf25c3 --- /dev/null +++ b/schemas/mozphab/usage/usage.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"mozphab", + "bq_metadata_format":"structured", + "bq_table":"usage_v1", + "expiration_policy":{ + "delete_after_days":10000 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/net-thunderbird-android-beta/health/health.2.bq b/schemas/net-thunderbird-android-beta/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/net-thunderbird-android-beta/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/net-thunderbird-android-beta/health/health.2.schema.json b/schemas/net-thunderbird-android-beta/health/health.2.schema.json new file mode 100644 index 000000000..fded49343 --- /dev/null +++ b/schemas/net-thunderbird-android-beta/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"net_thunderbird_android_beta", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/net-thunderbird-android-beta/metrics/metrics.2.bq b/schemas/net-thunderbird-android-beta/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/net-thunderbird-android-beta/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/net-thunderbird-android-beta/metrics/metrics.2.schema.json b/schemas/net-thunderbird-android-beta/metrics/metrics.2.schema.json new file mode 100644 index 000000000..dd405ec6b --- /dev/null +++ b/schemas/net-thunderbird-android-beta/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"net_thunderbird_android_beta", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/net-thunderbird-android-daily/health/health.2.bq b/schemas/net-thunderbird-android-daily/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/net-thunderbird-android-daily/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/net-thunderbird-android-daily/health/health.2.schema.json b/schemas/net-thunderbird-android-daily/health/health.2.schema.json new file mode 100644 index 000000000..43e8b5a1a --- /dev/null +++ b/schemas/net-thunderbird-android-daily/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"net_thunderbird_android_daily", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/net-thunderbird-android-daily/metrics/metrics.2.bq b/schemas/net-thunderbird-android-daily/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/net-thunderbird-android-daily/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/net-thunderbird-android-daily/metrics/metrics.2.schema.json b/schemas/net-thunderbird-android-daily/metrics/metrics.2.schema.json new file mode 100644 index 000000000..a11450218 --- /dev/null +++ b/schemas/net-thunderbird-android-daily/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"net_thunderbird_android_daily", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/net-thunderbird-android/health/health.2.bq b/schemas/net-thunderbird-android/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/net-thunderbird-android/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/net-thunderbird-android/health/health.2.schema.json b/schemas/net-thunderbird-android/health/health.2.schema.json new file mode 100644 index 000000000..36cc3e33a --- /dev/null +++ b/schemas/net-thunderbird-android/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"net_thunderbird_android", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/net-thunderbird-android/metrics/metrics.2.bq b/schemas/net-thunderbird-android/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/net-thunderbird-android/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/net-thunderbird-android/metrics/metrics.2.schema.json b/schemas/net-thunderbird-android/metrics/metrics.2.schema.json new file mode 100644 index 000000000..b9b98076f --- /dev/null +++ b/schemas/net-thunderbird-android/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"net_thunderbird_android", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-connect-firefox/health/health.2.bq b/schemas/org-mozilla-connect-firefox/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-connect-firefox/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-connect-firefox/health/health.2.schema.json b/schemas/org-mozilla-connect-firefox/health/health.2.schema.json new file mode 100644 index 000000000..33750b0b3 --- /dev/null +++ b/schemas/org-mozilla-connect-firefox/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_connect_firefox", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":1130 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-connect-firefox/metrics/metrics.2.bq b/schemas/org-mozilla-connect-firefox/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/org-mozilla-connect-firefox/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-connect-firefox/metrics/metrics.2.schema.json b/schemas/org-mozilla-connect-firefox/metrics/metrics.2.schema.json new file mode 100644 index 000000000..373da7c5e --- /dev/null +++ b/schemas/org-mozilla-connect-firefox/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_connect_firefox", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":10000 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix-nightly/adjust-attribution/adjust-attribution.2.bq b/schemas/org-mozilla-fenix-nightly/adjust-attribution/adjust-attribution.2.bq new file mode 100644 index 000000000..b0f5764e3 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/adjust-attribution/adjust-attribution.2.bq @@ -0,0 +1,647 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the Adjust AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_adgroup", + "type": "STRING" + }, + { + "description": "The name of the Adjust Campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the Adjust Creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_creative", + "type": "STRING" + }, + { + "description": "The name of the Adjust Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "adjust_attribution_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix-nightly/adjust-attribution/adjust-attribution.2.schema.json b/schemas/org-mozilla-fenix-nightly/adjust-attribution/adjust-attribution.2.schema.json new file mode 100644 index 000000000..cb2becfc9 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/adjust-attribution/adjust-attribution.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix_nightly", + "bq_metadata_format":"structured", + "bq_table":"adjust_attribution_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix-nightly/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-fenix-nightly/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix-nightly/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-fenix-nightly/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..727e1d129 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix_nightly", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix-nightly/first-session/first-session.2.bq b/schemas/org-mozilla-fenix-nightly/first-session/first-session.2.bq new file mode 100644 index 000000000..5a59cca49 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/first-session/first-session.2.bq @@ -0,0 +1,856 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The Glean generated date and time of the installation. This is\nunique per app install, though the rest of the data in this\nping is from Adjust and will remain static across installs.\n", + "mode": "NULLABLE", + "name": "first_session_timestamp", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "first_session_adgroup", + "type": "STRING" + }, + { + "description": "The name of the campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "first_session_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "first_session_creative", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "first_session_distribution_id", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The name of the Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "first_session_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The mobile application ID in Meta's attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_app", + "type": "STRING" + }, + { + "description": "Nonce used to decrypt the encrypted Meta attribution data.\n", + "mode": "NULLABLE", + "name": "meta_attribution_nonce", + "type": "STRING" + }, + { + "description": "Value tracking user interaction with Meta attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_t", + "type": "STRING" + }, + { + "description": "The name of the utm_campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_campaign", + "type": "STRING" + }, + { + "description": "The name of the utm_content that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_content", + "type": "STRING" + }, + { + "description": "The name of the utm_medium that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_medium", + "type": "STRING" + }, + { + "description": "The name of the utm_source that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_source", + "type": "STRING" + }, + { + "description": "The name of the utm_term that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The Meta attribution data in encrypted format.\n", + "mode": "NULLABLE", + "name": "meta_attribution_data", + "type": "STRING" + }, + { + "description": "The full install referrer response.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_install_referrer_response", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix-nightly/first-session/first-session.2.schema.json b/schemas/org-mozilla-fenix-nightly/first-session/first-session.2.schema.json new file mode 100644 index 000000000..a143dded6 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/first-session/first-session.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix_nightly", + "bq_metadata_format":"structured", + "bq_table":"first_session_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix-nightly/health/health.2.bq b/schemas/org-mozilla-fenix-nightly/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix-nightly/health/health.2.schema.json b/schemas/org-mozilla-fenix-nightly/health/health.2.schema.json new file mode 100644 index 000000000..d77ce0f8d --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix_nightly", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix-nightly/metrics/metrics.2.bq b/schemas/org-mozilla-fenix-nightly/metrics/metrics.2.bq new file mode 100644 index 000000000..29bcae413 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/metrics/metrics.2.bq @@ -0,0 +1,38861 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_enabled_addons", + "type": "BOOL" + }, + { + "description": "Whether or not the user has installed add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_installed_addons", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Firefox is the Android Autofill provider for this user.\nprovider.\n", + "mode": "NULLABLE", + "name": "android_autofill_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Android Autofill is supported by the device and is\nsupported for this user.\n", + "mode": "NULLABLE", + "name": "android_autofill_supported", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "True if the user has dynamic toolbar enabled, false if the user has dynamic toolbar disabled.\n", + "mode": "NULLABLE", + "name": "customization_settings_dynamic_toolbar", + "type": "BOOL" + }, + { + "description": "An indication of whether the recently\nsaved section is enabled to be displayed. This was previously customize_home.recently_saved.\n", + "mode": "NULLABLE", + "name": "customize_home_bookmarks", + "type": "BOOL" + }, + { + "description": "An indication of whether Contile is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_contile", + "type": "BOOL" + }, + { + "description": "An indication of whether the Jump back\nin section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_jump_back_in", + "type": "BOOL" + }, + { + "description": "An indication of whether the most visited sites\nare enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_most_visited_sites", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_pocket", + "type": "BOOL" + }, + { + "description": "An indication of whether the Recently\nvisited section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_recently_visited", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket sponsored stories are enabled\nto be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_sponsored_pocket", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the Debug Drawer feature.\n", + "mode": "NULLABLE", + "name": "debug_drawer_debug_drawer_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "True if marketing notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "events_marketing_notification_allowed", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Is Fenix the default browser?\n", + "mode": "NULLABLE", + "name": "metrics_default_browser", + "type": "BOOL" + }, + { + "description": "Is the default wallpapper set to be shown?\n", + "mode": "NULLABLE", + "name": "metrics_default_wallpaper", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the desktop folder\n", + "mode": "NULLABLE", + "name": "metrics_has_desktop_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the mobile folder\n", + "mode": "NULLABLE", + "name": "metrics_has_mobile_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has any open NORMAL tabs.\n", + "mode": "NULLABLE", + "name": "metrics_has_open_tabs", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has recently used PWAs.\nSee recently_used_pwa_count for the actual count.\n", + "mode": "NULLABLE", + "name": "metrics_has_recent_pwas", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has top sites\n", + "mode": "NULLABLE", + "name": "metrics_has_top_sites", + "type": "BOOL" + }, + { + "description": "True if the device is a large screen device.", + "mode": "NULLABLE", + "name": "metrics_is_large_device", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "metrics_notifications_allowed", + "type": "BOOL" + }, + { + "description": "True if the device's asserted 'advertised' RAM is more than the given threshold.", + "mode": "NULLABLE", + "name": "metrics_ram_more_than_threshold", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "Whether gesture navigation is used instead of the traditional navigation bar.\n", + "mode": "NULLABLE", + "name": "navigation_bar_os_navigation_uses_gestures", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "True when app Zygote preloading with isolated processes is enabled.", + "mode": "NULLABLE", + "name": "preferences_app_zygote_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled bookmark search suggestions\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_bookmarks_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled browsing history suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_browsing_history_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled clipboard search suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_clipboard_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Measures user retention of the Global Privacy Control (GPC) setting at start-up.", + "mode": "NULLABLE", + "name": "preferences_global_privacy_control_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has the inactive tabs feature enabled.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_inactive_tabs_enabled", + "type": "BOOL" + }, + { + "description": "True when isolated content processes are enabled on the runtime.", + "mode": "NULLABLE", + "name": "preferences_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Whether or not the user has remote debugging enabled\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_remote_debugging_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled search shortcuts.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_shortcuts_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has non sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_non_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user is signed into FxA\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_signed_in_sync", + "type": "BOOL" + }, + { + "description": "A metric indicating whether or not the user has studies enabled default: true\n", + "mode": "NULLABLE", + "name": "preferences_studies_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has telemetry enabled. Note we should\nnever receive a \"false\" value for this since telemetry would\nnot send in that case.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_telemetry_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the voice search button.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_voice_search_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not pull-to-refresh functionality\nis enabled from Settings screen.\ndefault: true\n", + "mode": "NULLABLE", + "name": "pull_to_refresh_in_browser_enabled", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "An indication of whether the recent tabs /\nJump Back In section is visible on the homepage.\n", + "mode": "NULLABLE", + "name": "recent_tabs_section_visible", + "type": "BOOL" + }, + { + "description": "Whether or not the user opted out of review quality check feature.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has disabled ads.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Whether or not Nimbus has disabled the use of the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Whether or the user has completed the review quality check onboarding.\n", + "mode": "NULLABLE", + "name": "shopping_settings_user_has_onboarded", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "Whether or not Tab Strip is enabled by the user.\n", + "mode": "NULLABLE", + "name": "tab_strip_enabled", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button continue with add-ons\ndisabled on the dialog for when the extensions\nprocess crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_disable", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button try to restart add-ons\non the dialog for when the extensions process crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_retry", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "addresses_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_saved", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been updated\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_updated", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "app_menu_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "credit_cards_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "A counter of URIs visited by the user in the current session, including\npage reloads. This includes private browsing. This does not include\nbackground page requests and URIs from embedded pages but may be\nincremented without user interaction by website scripts that\nprogrammatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "events_normal_and_private_uri_count", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "The total number of operations performed by the FxA client.", + "mode": "NULLABLE", + "name": "fxa_client_operation_count", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on a bookmark from the home\nscreen. This was previously recent_bookmarks.bookmark_clicked.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmark_clicked", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked the show all button for bookmarks\non the home screen. This was previously recent_bookmarks.show_all_bookmarks.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_show_all_bookmarks", + "type": "INT64" + }, + { + "description": "The number of times the home screen was displayed to the user.\n", + "mode": "NULLABLE", + "name": "home_screen_home_screen_view_count", + "type": "INT64" + }, + { + "description": "The number of times the standard browsing mode home screen was\ndisplayed to the user. (for tile counts)\n", + "mode": "NULLABLE", + "name": "home_screen_standard_homepage_view_count", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been deleted by user.\n", + "mode": "NULLABLE", + "name": "logins_deleted", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been modified by user.\n", + "mode": "NULLABLE", + "name": "logins_modified", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been saved by user (including deleted).\n", + "mode": "NULLABLE", + "name": "logins_saved", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted locally due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_local_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted in the mirror table due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_mirror_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_write_query_count", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the desktop\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in a\nnull value. To disambiguate between a failed `desktop_bookmarks_count`\nping and 0 bookmarks, please see `has_desktop_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_desktop_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the mobile\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in\na null value. To disambiguate between a failed `mobile_bookmarks_count`\nping and 0 bookmarks, please see `has_mobile_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_mobile_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PRIVATE tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `private_tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`\n", + "mode": "NULLABLE", + "name": "metrics_private_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PWAs a user has recently used.\nThreshold for \"recency\" set in HomeActivity#PWA_RECENTLY_USED_THRESHOLD.\nCurrently we are not told by the OS when a PWA is removed by the user,\nso we use the \"recently used\" heuristic to judge how many PWAs are still\nactive, as a proxy for \"installed\". This value will only be set if the\nuser has at least *one* recently used PWA. If they have 0, this metric\nwill not be sent, resulting in a null value during analysis on the\nserver-side. To disambiguate between a failed `recently_used_pwa_count`\nmetric and 0 recent PWAs, please see `has_recent_pwas`.\n", + "mode": "NULLABLE", + "name": "metrics_recently_used_pwa_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many NORMAL tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`.\n", + "mode": "NULLABLE", + "name": "metrics_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many top sites a user has. This value will\nonly be set if the user has at least *one* top site. If they have 0,\nthis ping will not get sent, resulting in a null value. To disambiguate\nbetween a failed `top_sites_count` ping and 0 top sites, please see\n`has_top_sites`.\n", + "mode": "NULLABLE", + "name": "metrics_top_sites_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_write_query_count", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "Counts how often the loading placeholder is shown and the resulting tab\nis the same as it was before the load.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_latest_synced_tab_is_stale", + "type": "INT64" + }, + { + "description": "Counts how many times \"show all synced tabs\" button has been clicked.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_show_all_synced_tabs_clicked", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "settings_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts number of visits to a supported retailer product page\nwhile enrolled in either the control or treatment branches\nof the shopping experiment.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has closed.\n", + "mode": "NULLABLE", + "name": "tabs_tray_close_inactive_tab", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has opened.\n", + "mode": "NULLABLE", + "name": "tabs_tray_open_inactive_tab", + "type": "INT64" + }, + { + "description": "Records the number of times the user dismissed the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_dismiss_count", + "type": "INT64" + }, + { + "description": "Records the number of Terms of Use prompt impressions the user has had.", + "mode": "NULLABLE", + "name": "terms_of_use_impression_count", + "type": "INT64" + }, + { + "description": "Records the number of times the user clicked 'remind me later' on the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_remind_me_later_count", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + }, + { + "description": "The timestamp when the user was shown the privacy notice banner.", + "mode": "NULLABLE", + "name": "privacy_notice_banner_displayed_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.", + "mode": "NULLABLE", + "name": "terms_of_use_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during FxA operations, labeled by type. It is intended to be used together with `operation_count` to measure the overall error rate of FxA operations operations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fxa_client_error_count", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_write_query_error_count", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has added.\n\nThe label for this counter is ``.\n\n`source` will be: `page_action_menu` as that is the only\nentry point right now to add bookmarks.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_add", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has deleted.\n\nThe label for this counter is ``.\n\n`source` will be: `add_bookmark_toast` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_delete", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has edited.\n\nThe label for this counter is ``.\n\n`source` will be: `bookmark_edit_page` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_edit", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has opened.\n\nThe label for this counter is ``.\n\n`source` will be: `top_sites`, `awesomebar_results`, `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_open", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Fenix `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`, `widget`, `shortcut`, `topsite`\n(depending on the source from which the search started). Also added the\n`other` option for the source but it should never enter on this case.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_search_count", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- Home screen shortcuts: `*_view`\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\npr", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_write_query_error_count", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Counts the number of times a recent synced tab is opened, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_opened", + "type": "RECORD" + }, + { + "description": "Counts impressions of a recent synced tab on the homepage, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_shown", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The area that the tabs tray was accessed from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_tray_access_point", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "How many and which type of wallpapers were applied.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "wallpapers_new_wallpaper_applied", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "Size of the db after executing `run_maintenance()`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_db_size_after_maintenance", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "The size of the app's APK and related files as installed: this is expected\nto be larger than download size. This is the output of\n[StorageStats.getAppBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytes())\nso see that for details. This value is only available on Android 8+. A\nsimilar value may be available on the Google Play dashboard: we can use\nthis value to see if that value is reliable enough.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_app_bytes", + "type": "RECORD" + }, + { + "description": "The size of all cached data in the app. This is the output of\n[StorageStats.getCacheBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getCacheBytes())\nso see that for details. This value is only available on Android 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_cache_bytes", + "type": "RECORD" + }, + { + "description": "The size of all data minus `cache_bytes`. This is the output of\n[StorageStats.getDataBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getDataBytes())\nexcept we subtract the value of `cache_bytes` so the cache is not measured\nredundantly; see that method for details. This value is only available on\nAndroid 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_data_dir_bytes", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The Nimbus context object that is recorded to Glean\n", + "mode": "NULLABLE", + "name": "nimbus_system_recorded_nimbus_context", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "A counter of the number of all addresses that are currently saved by user.\n", + "mode": "NULLABLE", + "name": "addresses_saved_all", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "Counter of number of credit cards that are currently stored by user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved_all", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of bookmarked items appearing in the\nBookmarks section on the home page. This was previously recent_bookmarks.recent_bookmarks_count.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmarks_count", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "Counter of number of passwords currently saved by user.\n", + "mode": "NULLABLE", + "name": "logins_saved_all", + "type": "INT64" + }, + { + "description": "The total amount of memory this device in bytes, when available will be MemoryInfo.advertisedMem otherwise it will be MemoryInfo.totalMem. This doesn't represent memory available to the application however.\n", + "mode": "NULLABLE", + "name": "metrics_device_total_ram", + "type": "INT64" + }, + { + "description": "How many inactive tabs does the user have, checked when the user opens\nthe tabs tray.\nValue will be 0 if the feature is disabled.\n", + "mode": "NULLABLE", + "name": "metrics_inactive_tabs_count", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.", + "mode": "NULLABLE", + "name": "terms_of_use_version", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "What opening screen preference the user has selected\nunder \"Customize Home\".\n\"homepage,\" \"last tab,\" or \"homepage after 4 hours\"\ndefault: \"homepage after 4 hours\"\n", + "mode": "NULLABLE", + "name": "customize_home_opening_screen", + "type": "STRING" + }, + { + "description": "A user chose a filter for the downloads page.\nThe filter can be All, Image, Video, Document or Other.\n", + "mode": "NULLABLE", + "name": "downloads_filtered", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string containing the Adjust ad group ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_ad_group", + "type": "STRING" + }, + { + "description": "A string containing the Adjust campaign ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_campaign", + "type": "STRING" + }, + { + "description": "A string containing the Adjust creative ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_creative", + "type": "STRING" + }, + { + "description": "A string containing the Adjust network ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_network", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab closing:\nMANUAL, ONE_DAY, ONE_WEEK, ONE_MONTH\n", + "mode": "NULLABLE", + "name": "metrics_close_tab_setting", + "type": "STRING" + }, + { + "description": "The name of the default browser on device if and only if it's a Mozilla\nowned product\n", + "mode": "NULLABLE", + "name": "metrics_default_moz_browser", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "metrics_distribution_id", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab view:\nGRID, LIST\n", + "mode": "NULLABLE", + "name": "metrics_tab_view_setting", + "type": "STRING" + }, + { + "description": "Measures user retention of the DNS over HTTPS (DoH) setting at start-up.\nExample values include: \"Default\", \"Increased\", \"Max\", \"Off\".\n", + "mode": "NULLABLE", + "name": "preferences_doh_protection_level", + "type": "STRING" + }, + { + "description": "What type of enhanced tracking protection the user has enabled.\n\"standard,\" \"strict,\" \"custom,\" or \"\" (if disabled)\ndefault: \"standard\"\n", + "mode": "NULLABLE", + "name": "preferences_enhanced_tracking_protection", + "type": "STRING" + }, + { + "description": "The option user has selected in the \"Custom\" mode of the\nEnhanced Tracking Protection settings.\nPossible values:\n- total-protection for “Isolate cross-site cookies”\n- social for “Cross-site and social media trackers”\n- unvisited for “Cookies from unvisited sites”\n- third-party for “All third-party cookies..”\n- all for “All cookies..”\n", + "mode": "NULLABLE", + "name": "preferences_etp_custom_cookies_selection", + "type": "STRING" + }, + { + "description": "Measures user retention of the HTTPS-Only setting at start-up.\nExample values include: \"DISABLED\", \"ENABLED_PRIVATE_ONLY\", \"ENABLED\".\n", + "mode": "NULLABLE", + "name": "preferences_https_only_mode", + "type": "STRING" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in expanded toolbar.\nPossible values are: bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_expanded_shortcut", + "type": "STRING" + }, + { + "description": "The mode of the toolbar. Possible values are: simple or expanded.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_mode_setting", + "type": "STRING" + }, + { + "description": "The position of the toolbar\ndefault: bottom (defaults to top if the user has accessibility services)\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_position_setting", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in simple toolbar.\nPossible values are: new_tab, share, bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_simple_shortcut", + "type": "STRING" + }, + { + "description": "The theme the user has enabled. \"light,\" \"dark,\" \"system,\" or \"battery\"\ndefault: \"system\" for API 28+, else \"light\"\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine identifier. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_code", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine name. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_name", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "Record whether the user chooses an option from the dropdown.\n", + "mode": "NULLABLE", + "name": "webcompatreporting_reason_dropdown", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "addons_enabled_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "addons_installed_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "metrics_mozilla_products", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_accessibility_services", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_sync_items", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in a browser tab (normal or private).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_browser_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in custom tab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_custom_tab_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in home screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_home_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The time that it takes to load the Search content.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics_search_page_load_time", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "Duration of a bookmarks awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_bookmark_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a clipboard awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_clipboard_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a history awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_history_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a search engine awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_search_engine_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a session awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_session_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a shortcuts awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_shortcuts_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a synced tabs awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_synced_tabs_suggestions", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "The duration of `FenixApplication.onCreate` in the main process. This does\nnot measure the duration of migration code (via\n`MigratingFenixApplication` included in the Beta and Release channels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_application_on_create", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD MAIN start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nNotably, this duration omits the time from process start to the\ninitializer (which includes a lengthy dex operation) and the time from\nthe first frame to visual completeness. This probe doesn't measure Custom\nTabs or other uses of `ExternalAppBrowserActivity` to simplify result\nanalysis. The methodology for determining this measurement is imperfect\nto simplify implementation. Issues may include:\n
- Not measuring Beta and Release channels (due to\n`MigrationDecisionActivity` interrupting the logic).\n
- Not distinguishing between MAIN to homescreen, onboarding, session\nrestore, others?\n
- Not choosing to record a MAIN based on what the user would see and\nthus the core code path (i.e. the thing we want to measure) but rather on\nthe initial `Intent` state.\n

\nThe hope is that these cases will not have a significant impac", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_main_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary)\nwhere we can't say it was a MAIN or VIEW start up. The methodology for\ndetermining this measurement is imperfect to simplify implementation.\n

\nSee the `cold_main_app_to_first_frame` probe docs for known issues and\nmore details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_unknwn_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD VIEW start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nThe methodology for determining this measurement is imperfect to simplify\nimplementation. Issues may include:\n
-Including VIEW intents that aren't valid so take code paths similar\nto MAIN (this is speculative)\n

\nSee the `cold_main_app_to_first_frame` probe docs for other possible\nknown issues and more details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_view_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA_CHECKPOINT` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_chk_pnt_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA optimize` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_optimize_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `prune_older_visits()` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_prune_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `VACUUM` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_vacuum_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Google Play Install Referrer library.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "play_store_attribution_attribution_time", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Measures the amount of time between the beginning of a sync and the end.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "recent_synced_tabs_recent_synced_tab_time_to_load", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "How long it took to query the device for the StorageStats that contain the\nfile size information. The docs say it may be expensive so we want to\nensure it's not too expensive. This value is only available on Android\n8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_query_stats_duration", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "If the search engine is pre-loaded with Fenix this value will be the base\nURL we use to build the search query for the search engine. For example:\nhttps://mysearchengine.com/?query=%s. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the value\nwill not be set.\n", + "mode": "NULLABLE", + "name": "search_default_engine_search_url", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "url2", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix-nightly/metrics/metrics.2.schema.json b/schemas/org-mozilla-fenix-nightly/metrics/metrics.2.schema.json new file mode 100644 index 000000000..a64f3e0a1 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix_nightly", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix-nightly/sync/sync.2.bq b/schemas/org-mozilla-fenix-nightly/sync/sync.2.bq new file mode 100644 index 000000000..08fd1ea65 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/sync/sync.2.bq @@ -0,0 +1,954 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "When the sync telemetry session begins (the `SyncTelemetryImpl`\nconstructor runs).\nTypically useful for ordering \"sync\" pings.\n", + "mode": "NULLABLE", + "name": "syncs_session_start_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_failure_reason", + "type": "RECORD" + }, + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_v2_failure_reason", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The application-services developers are in the process of oxidizing parts\nof firefox sync and the related data storage code,\nwhich typically requires migrating the old storage into a new database and/or format.\n\nWhen a migration like this occurs,\na record is reported in this list the next time the sync ping is submitted.\n\n```text\n [{\n migration_type: Presently this is only ever \"webext-storage\",\n entries: The number of entries/preferences in the source (legacy) database, including ones we failed to read,\n entriesSuccessful: he number of entries/preferences (see below) which we have successfully migrated into the destination database,\n extensions: The number of distinct extensions which have at least one preference in the source (legacy) database,\n extensionsSuccessful: The number of distinct extensions which have at least one preference in the destination (migrated) database,\n openFailure: A boolean flag that is true if we hit a read error prior to . This likely indicates complete corruptio", + "mode": "NULLABLE", + "name": "syncs_migrations", + "type": "JSON" + }, + { + "description": "Recorded syncs.\nThe \"sync\" ping is not submitted if this is empty.\n```text\n [{\n when: integer ms since epoch,\n took: integer ms duration,\n didLogin: true if first sync after login,\n why:\n - \"startup\" if first sync after browser startup\n - \"schedule\" if it's been too long since the last sync\n - \"score\" if one of sync's trackers has a high score value indicating many changes since the last sync\n - \"user\" if the user manually triggered the sync\n - \"tabs\" if the user opened the synced tabs sidebar, triggering a sync\n failureReason: { // if there was an error\n name: {\"httperror\"|\"networkerror\"|...},\n code: error code for \"httperror\" and \"networkerror\" only,\n error: error string for \"othererror\" and \"unexpectederror\" only,\n from: for \"autherror\" only,\n },\n devices: [{ // excluded if we couldn't get a valid uid or local device id\n os: provided by `Services.appinfo.OS`,\n version: provided by `Services.appinfo.version`,\n id: hashed FxA d", + "mode": "NULLABLE", + "name": "syncs_syncs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How many syncs happened which were not reported in detail\ndue to being over the number of syncs we report detailed information for.\n", + "mode": "NULLABLE", + "name": "syncs_discarded", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "Hashed FxA device ID, hex string of 64 characters.\nNot included if the user is not logged in.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_device_id", + "type": "STRING" + }, + { + "description": "Hashed FxA unique ID, or string of 32 zeroes.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_fxa_uid", + "type": "STRING" + }, + { + "description": "The \"node type\" as reported by the token server.\nThis will not change from sync to sync.\nMay not be present if the token server omits this information.\n", + "mode": "NULLABLE", + "name": "syncs_sync_node_type", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_sync_uuid", + "type": "STRING" + }, + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_v2_sync_uuid", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix-nightly/sync/sync.2.schema.json b/schemas/org-mozilla-fenix-nightly/sync/sync.2.schema.json new file mode 100644 index 000000000..4413b4d24 --- /dev/null +++ b/schemas/org-mozilla-fenix-nightly/sync/sync.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix_nightly", + "bq_metadata_format":"structured", + "bq_table":"sync_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":false, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix/adjust-attribution/adjust-attribution.2.bq b/schemas/org-mozilla-fenix/adjust-attribution/adjust-attribution.2.bq new file mode 100644 index 000000000..b0f5764e3 --- /dev/null +++ b/schemas/org-mozilla-fenix/adjust-attribution/adjust-attribution.2.bq @@ -0,0 +1,647 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the Adjust AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_adgroup", + "type": "STRING" + }, + { + "description": "The name of the Adjust Campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the Adjust Creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_creative", + "type": "STRING" + }, + { + "description": "The name of the Adjust Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "adjust_attribution_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix/adjust-attribution/adjust-attribution.2.schema.json b/schemas/org-mozilla-fenix/adjust-attribution/adjust-attribution.2.schema.json new file mode 100644 index 000000000..75f0f1428 --- /dev/null +++ b/schemas/org-mozilla-fenix/adjust-attribution/adjust-attribution.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix", + "bq_metadata_format":"structured", + "bq_table":"adjust_attribution_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-fenix/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-fenix/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-fenix/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..374bfa1dd --- /dev/null +++ b/schemas/org-mozilla-fenix/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix/first-session/first-session.2.bq b/schemas/org-mozilla-fenix/first-session/first-session.2.bq new file mode 100644 index 000000000..5a59cca49 --- /dev/null +++ b/schemas/org-mozilla-fenix/first-session/first-session.2.bq @@ -0,0 +1,856 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The Glean generated date and time of the installation. This is\nunique per app install, though the rest of the data in this\nping is from Adjust and will remain static across installs.\n", + "mode": "NULLABLE", + "name": "first_session_timestamp", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "first_session_adgroup", + "type": "STRING" + }, + { + "description": "The name of the campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "first_session_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "first_session_creative", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "first_session_distribution_id", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The name of the Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "first_session_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The mobile application ID in Meta's attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_app", + "type": "STRING" + }, + { + "description": "Nonce used to decrypt the encrypted Meta attribution data.\n", + "mode": "NULLABLE", + "name": "meta_attribution_nonce", + "type": "STRING" + }, + { + "description": "Value tracking user interaction with Meta attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_t", + "type": "STRING" + }, + { + "description": "The name of the utm_campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_campaign", + "type": "STRING" + }, + { + "description": "The name of the utm_content that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_content", + "type": "STRING" + }, + { + "description": "The name of the utm_medium that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_medium", + "type": "STRING" + }, + { + "description": "The name of the utm_source that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_source", + "type": "STRING" + }, + { + "description": "The name of the utm_term that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The Meta attribution data in encrypted format.\n", + "mode": "NULLABLE", + "name": "meta_attribution_data", + "type": "STRING" + }, + { + "description": "The full install referrer response.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_install_referrer_response", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix/first-session/first-session.2.schema.json b/schemas/org-mozilla-fenix/first-session/first-session.2.schema.json new file mode 100644 index 000000000..873ab4123 --- /dev/null +++ b/schemas/org-mozilla-fenix/first-session/first-session.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix", + "bq_metadata_format":"structured", + "bq_table":"first_session_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix/health/health.2.bq b/schemas/org-mozilla-fenix/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-fenix/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix/health/health.2.schema.json b/schemas/org-mozilla-fenix/health/health.2.schema.json new file mode 100644 index 000000000..1cbb6499f --- /dev/null +++ b/schemas/org-mozilla-fenix/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix/metrics/metrics.2.bq b/schemas/org-mozilla-fenix/metrics/metrics.2.bq new file mode 100644 index 000000000..0f82144a2 --- /dev/null +++ b/schemas/org-mozilla-fenix/metrics/metrics.2.bq @@ -0,0 +1,39119 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_enabled_addons", + "type": "BOOL" + }, + { + "description": "Whether or not the user has installed add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_installed_addons", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Firefox is the Android Autofill provider for this user.\nprovider.\n", + "mode": "NULLABLE", + "name": "android_autofill_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Android Autofill is supported by the device and is\nsupported for this user.\n", + "mode": "NULLABLE", + "name": "android_autofill_supported", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "True if the user has dynamic toolbar enabled, false if the user has dynamic toolbar disabled.\n", + "mode": "NULLABLE", + "name": "customization_settings_dynamic_toolbar", + "type": "BOOL" + }, + { + "description": "An indication of whether the recently\nsaved section is enabled to be displayed. This was previously customize_home.recently_saved.\n", + "mode": "NULLABLE", + "name": "customize_home_bookmarks", + "type": "BOOL" + }, + { + "description": "An indication of whether Contile is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_contile", + "type": "BOOL" + }, + { + "description": "An indication of whether the Jump back\nin section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_jump_back_in", + "type": "BOOL" + }, + { + "description": "An indication of whether the most visited sites\nare enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_most_visited_sites", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_pocket", + "type": "BOOL" + }, + { + "description": "An indication of whether the Recently\nvisited section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_recently_visited", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket sponsored stories are enabled\nto be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_sponsored_pocket", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the Debug Drawer feature.\n", + "mode": "NULLABLE", + "name": "debug_drawer_debug_drawer_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "True if marketing notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "events_marketing_notification_allowed", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Is Fenix the default browser?\n", + "mode": "NULLABLE", + "name": "metrics_default_browser", + "type": "BOOL" + }, + { + "description": "Is the default wallpapper set to be shown?\n", + "mode": "NULLABLE", + "name": "metrics_default_wallpaper", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the desktop folder\n", + "mode": "NULLABLE", + "name": "metrics_has_desktop_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the mobile folder\n", + "mode": "NULLABLE", + "name": "metrics_has_mobile_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has any open NORMAL tabs.\n", + "mode": "NULLABLE", + "name": "metrics_has_open_tabs", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has recently used PWAs.\nSee recently_used_pwa_count for the actual count.\n", + "mode": "NULLABLE", + "name": "metrics_has_recent_pwas", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has top sites\n", + "mode": "NULLABLE", + "name": "metrics_has_top_sites", + "type": "BOOL" + }, + { + "description": "True if the device is a large screen device.", + "mode": "NULLABLE", + "name": "metrics_is_large_device", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "metrics_notifications_allowed", + "type": "BOOL" + }, + { + "description": "True if the device's asserted 'advertised' RAM is more than the given threshold.", + "mode": "NULLABLE", + "name": "metrics_ram_more_than_threshold", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "Whether gesture navigation is used instead of the traditional navigation bar.\n", + "mode": "NULLABLE", + "name": "navigation_bar_os_navigation_uses_gestures", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "True when app Zygote preloading with isolated processes is enabled.", + "mode": "NULLABLE", + "name": "preferences_app_zygote_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled bookmark search suggestions\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_bookmarks_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled browsing history suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_browsing_history_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled clipboard search suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_clipboard_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Measures user retention of the Global Privacy Control (GPC) setting at start-up.", + "mode": "NULLABLE", + "name": "preferences_global_privacy_control_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has the inactive tabs feature enabled.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_inactive_tabs_enabled", + "type": "BOOL" + }, + { + "description": "True when isolated content processes are enabled on the runtime.", + "mode": "NULLABLE", + "name": "preferences_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Whether or not the user has remote debugging enabled\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_remote_debugging_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled search shortcuts.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_shortcuts_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has non sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_non_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user is signed into FxA\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_signed_in_sync", + "type": "BOOL" + }, + { + "description": "A metric indicating whether or not the user has studies enabled default: true\n", + "mode": "NULLABLE", + "name": "preferences_studies_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has telemetry enabled. Note we should\nnever receive a \"false\" value for this since telemetry would\nnot send in that case.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_telemetry_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the voice search button.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_voice_search_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not pull-to-refresh functionality\nis enabled from Settings screen.\ndefault: true\n", + "mode": "NULLABLE", + "name": "pull_to_refresh_in_browser_enabled", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "An indication of whether the recent tabs /\nJump Back In section is visible on the homepage.\n", + "mode": "NULLABLE", + "name": "recent_tabs_section_visible", + "type": "BOOL" + }, + { + "description": "Whether or not the user opted out of review quality check feature.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has disabled ads.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Whether or not Nimbus has disabled the use of the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Whether or the user has completed the review quality check onboarding.\n", + "mode": "NULLABLE", + "name": "shopping_settings_user_has_onboarded", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "Whether or not Tab Strip is enabled by the user.\n", + "mode": "NULLABLE", + "name": "tab_strip_enabled", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button continue with add-ons\ndisabled on the dialog for when the extensions\nprocess crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_disable", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button try to restart add-ons\non the dialog for when the extensions process crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_retry", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "addresses_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_saved", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been updated\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_updated", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "app_menu_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "credit_cards_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "A counter of URIs visited by the user in the current session, including\npage reloads. This includes private browsing. This does not include\nbackground page requests and URIs from embedded pages but may be\nincremented without user interaction by website scripts that\nprogrammatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "events_normal_and_private_uri_count", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "The total number of operations performed by the FxA client.", + "mode": "NULLABLE", + "name": "fxa_client_operation_count", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on a bookmark from the home\nscreen. This was previously recent_bookmarks.bookmark_clicked.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmark_clicked", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked the show all button for bookmarks\non the home screen. This was previously recent_bookmarks.show_all_bookmarks.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_show_all_bookmarks", + "type": "INT64" + }, + { + "description": "The number of times the home screen was displayed to the user.\n", + "mode": "NULLABLE", + "name": "home_screen_home_screen_view_count", + "type": "INT64" + }, + { + "description": "The number of times the standard browsing mode home screen was\ndisplayed to the user. (for tile counts)\n", + "mode": "NULLABLE", + "name": "home_screen_standard_homepage_view_count", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been deleted by user.\n", + "mode": "NULLABLE", + "name": "logins_deleted", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been modified by user.\n", + "mode": "NULLABLE", + "name": "logins_modified", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been saved by user (including deleted).\n", + "mode": "NULLABLE", + "name": "logins_saved", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted locally due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_local_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted in the mirror table due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_mirror_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_write_query_count", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the desktop\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in a\nnull value. To disambiguate between a failed `desktop_bookmarks_count`\nping and 0 bookmarks, please see `has_desktop_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_desktop_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the mobile\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in\na null value. To disambiguate between a failed `mobile_bookmarks_count`\nping and 0 bookmarks, please see `has_mobile_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_mobile_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PRIVATE tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `private_tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`\n", + "mode": "NULLABLE", + "name": "metrics_private_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PWAs a user has recently used.\nThreshold for \"recency\" set in HomeActivity#PWA_RECENTLY_USED_THRESHOLD.\nCurrently we are not told by the OS when a PWA is removed by the user,\nso we use the \"recently used\" heuristic to judge how many PWAs are still\nactive, as a proxy for \"installed\". This value will only be set if the\nuser has at least *one* recently used PWA. If they have 0, this metric\nwill not be sent, resulting in a null value during analysis on the\nserver-side. To disambiguate between a failed `recently_used_pwa_count`\nmetric and 0 recent PWAs, please see `has_recent_pwas`.\n", + "mode": "NULLABLE", + "name": "metrics_recently_used_pwa_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many NORMAL tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`.\n", + "mode": "NULLABLE", + "name": "metrics_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many top sites a user has. This value will\nonly be set if the user has at least *one* top site. If they have 0,\nthis ping will not get sent, resulting in a null value. To disambiguate\nbetween a failed `top_sites_count` ping and 0 top sites, please see\n`has_top_sites`.\n", + "mode": "NULLABLE", + "name": "metrics_top_sites_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_write_query_count", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "Counts how often the loading placeholder is shown and the resulting tab\nis the same as it was before the load.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_latest_synced_tab_is_stale", + "type": "INT64" + }, + { + "description": "Counts how many times \"show all synced tabs\" button has been clicked.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_show_all_synced_tabs_clicked", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "settings_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts number of visits to a supported retailer product page\nwhile enrolled in either the control or treatment branches\nof the shopping experiment.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has closed.\n", + "mode": "NULLABLE", + "name": "tabs_tray_close_inactive_tab", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has opened.\n", + "mode": "NULLABLE", + "name": "tabs_tray_open_inactive_tab", + "type": "INT64" + }, + { + "description": "Records the number of times the user dismissed the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_dismiss_count", + "type": "INT64" + }, + { + "description": "Records the number of Terms of Use prompt impressions the user has had.", + "mode": "NULLABLE", + "name": "terms_of_use_impression_count", + "type": "INT64" + }, + { + "description": "Records the number of times the user clicked 'remind me later' on the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_remind_me_later_count", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + }, + { + "description": "The timestamp when the user was shown the privacy notice banner.", + "mode": "NULLABLE", + "name": "privacy_notice_banner_displayed_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.", + "mode": "NULLABLE", + "name": "terms_of_use_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during FxA operations, labeled by type. It is intended to be used together with `operation_count` to measure the overall error rate of FxA operations operations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fxa_client_error_count", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_write_query_error_count", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has added.\n\nThe label for this counter is ``.\n\n`source` will be: `page_action_menu` as that is the only\nentry point right now to add bookmarks.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_add", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has deleted.\n\nThe label for this counter is ``.\n\n`source` will be: `add_bookmark_toast` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_delete", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has edited.\n\nThe label for this counter is ``.\n\n`source` will be: `bookmark_edit_page` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_edit", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has opened.\n\nThe label for this counter is ``.\n\n`source` will be: `top_sites`, `awesomebar_results`, `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_open", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Fenix `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`, `widget`, `shortcut`, `topsite`\n(depending on the source from which the search started). Also added the\n`other` option for the source but it should never enter on this case.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_search_count", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- Home screen shortcuts: `*_view`\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\npr", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_write_query_error_count", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Counts the number of times a recent synced tab is opened, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_opened", + "type": "RECORD" + }, + { + "description": "Counts impressions of a recent synced tab on the homepage, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_shown", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The area that the tabs tray was accessed from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_tray_access_point", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "How many and which type of wallpapers were applied.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "wallpapers_new_wallpaper_applied", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "Size of the db after executing `run_maintenance()`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_db_size_after_maintenance", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "The size of the app's APK and related files as installed: this is expected\nto be larger than download size. This is the output of\n[StorageStats.getAppBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytes())\nso see that for details. This value is only available on Android 8+. A\nsimilar value may be available on the Google Play dashboard: we can use\nthis value to see if that value is reliable enough.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_app_bytes", + "type": "RECORD" + }, + { + "description": "The size of all cached data in the app. This is the output of\n[StorageStats.getCacheBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getCacheBytes())\nso see that for details. This value is only available on Android 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_cache_bytes", + "type": "RECORD" + }, + { + "description": "The size of all data minus `cache_bytes`. This is the output of\n[StorageStats.getDataBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getDataBytes())\nexcept we subtract the value of `cache_bytes` so the cache is not measured\nredundantly; see that method for details. This value is only available on\nAndroid 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_data_dir_bytes", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The Nimbus context object that is recorded to Glean\n", + "mode": "NULLABLE", + "name": "nimbus_system_recorded_nimbus_context", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "A counter of the number of all addresses that are currently saved by user.\n", + "mode": "NULLABLE", + "name": "addresses_saved_all", + "type": "INT64" + }, + { + "description": "Image-decode Error from AOM decoder\n", + "mode": "NULLABLE", + "name": "avif_aom_decode_error", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "Counter of number of credit cards that are currently stored by user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved_all", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of bookmarked items appearing in the\nBookmarks section on the home page. This was previously recent_bookmarks.recent_bookmarks_count.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmarks_count", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "Counter of number of passwords currently saved by user.\n", + "mode": "NULLABLE", + "name": "logins_saved_all", + "type": "INT64" + }, + { + "description": "The total amount of memory this device in bytes, when available will be MemoryInfo.advertisedMem otherwise it will be MemoryInfo.totalMem. This doesn't represent memory available to the application however.\n", + "mode": "NULLABLE", + "name": "metrics_device_total_ram", + "type": "INT64" + }, + { + "description": "How many inactive tabs does the user have, checked when the user opens\nthe tabs tray.\nValue will be 0 if the feature is disabled.\n", + "mode": "NULLABLE", + "name": "metrics_inactive_tabs_count", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.", + "mode": "NULLABLE", + "name": "terms_of_use_version", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "What opening screen preference the user has selected\nunder \"Customize Home\".\n\"homepage,\" \"last tab,\" or \"homepage after 4 hours\"\ndefault: \"homepage after 4 hours\"\n", + "mode": "NULLABLE", + "name": "customize_home_opening_screen", + "type": "STRING" + }, + { + "description": "A user chose a filter for the downloads page.\nThe filter can be All, Image, Video, Document or Other.\n", + "mode": "NULLABLE", + "name": "downloads_filtered", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310\n", + "mode": "NULLABLE", + "name": "geckoview_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1\n", + "mode": "NULLABLE", + "name": "geckoview_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string containing the Adjust ad group ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_ad_group", + "type": "STRING" + }, + { + "description": "A string containing the Adjust campaign ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_campaign", + "type": "STRING" + }, + { + "description": "A string containing the Adjust creative ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_creative", + "type": "STRING" + }, + { + "description": "A string containing the Adjust network ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_network", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab closing:\nMANUAL, ONE_DAY, ONE_WEEK, ONE_MONTH\n", + "mode": "NULLABLE", + "name": "metrics_close_tab_setting", + "type": "STRING" + }, + { + "description": "The name of the default browser on device if and only if it's a Mozilla\nowned product\n", + "mode": "NULLABLE", + "name": "metrics_default_moz_browser", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "metrics_distribution_id", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab view:\nGRID, LIST\n", + "mode": "NULLABLE", + "name": "metrics_tab_view_setting", + "type": "STRING" + }, + { + "description": "Measures user retention of the DNS over HTTPS (DoH) setting at start-up.\nExample values include: \"Default\", \"Increased\", \"Max\", \"Off\".\n", + "mode": "NULLABLE", + "name": "preferences_doh_protection_level", + "type": "STRING" + }, + { + "description": "What type of enhanced tracking protection the user has enabled.\n\"standard,\" \"strict,\" \"custom,\" or \"\" (if disabled)\ndefault: \"standard\"\n", + "mode": "NULLABLE", + "name": "preferences_enhanced_tracking_protection", + "type": "STRING" + }, + { + "description": "The option user has selected in the \"Custom\" mode of the\nEnhanced Tracking Protection settings.\nPossible values:\n- total-protection for “Isolate cross-site cookies”\n- social for “Cross-site and social media trackers”\n- unvisited for “Cookies from unvisited sites”\n- third-party for “All third-party cookies..”\n- all for “All cookies..”\n", + "mode": "NULLABLE", + "name": "preferences_etp_custom_cookies_selection", + "type": "STRING" + }, + { + "description": "Measures user retention of the HTTPS-Only setting at start-up.\nExample values include: \"DISABLED\", \"ENABLED_PRIVATE_ONLY\", \"ENABLED\".\n", + "mode": "NULLABLE", + "name": "preferences_https_only_mode", + "type": "STRING" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in expanded toolbar.\nPossible values are: bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_expanded_shortcut", + "type": "STRING" + }, + { + "description": "The mode of the toolbar. Possible values are: simple or expanded.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_mode_setting", + "type": "STRING" + }, + { + "description": "The position of the toolbar\ndefault: bottom (defaults to top if the user has accessibility services)\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_position_setting", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in simple toolbar.\nPossible values are: new_tab, share, bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_simple_shortcut", + "type": "STRING" + }, + { + "description": "The theme the user has enabled. \"light,\" \"dark,\" \"system,\" or \"battery\"\ndefault: \"system\" for API 28+, else \"light\"\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine identifier. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_code", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine name. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_name", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "Record whether the user chooses an option from the dropdown.\n", + "mode": "NULLABLE", + "name": "webcompatreporting_reason_dropdown", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "addons_enabled_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "addons_installed_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "metrics_mozilla_products", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_accessibility_services", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_sync_items", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in a browser tab (normal or private).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_browser_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in custom tab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_custom_tab_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in home screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_home_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "The time taken to build a webrender frame. This involves calculating the visibility of primitives, requesting resources, and building the render passes which will be used to render the frame.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time taken to build a webrender scene. This occurs each time webrender receives a new display list. This additionally includes blob rasterization time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_scenebuild_time", + "type": "RECORD" + }, + { + "description": "The time taken to do a webrender scene swap. This is book-keeping that APZ must perform once webrender has built a new scene.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The time that it takes to load the Search content.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics_search_page_load_time", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "Duration of a bookmarks awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_bookmark_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a clipboard awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_clipboard_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a history awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_history_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a search engine awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_search_engine_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a session awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_session_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a shortcuts awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_shortcuts_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a synced tabs awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_synced_tabs_suggestions", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "The duration of `FenixApplication.onCreate` in the main process. This does\nnot measure the duration of migration code (via\n`MigratingFenixApplication` included in the Beta and Release channels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_application_on_create", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD MAIN start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nNotably, this duration omits the time from process start to the\ninitializer (which includes a lengthy dex operation) and the time from\nthe first frame to visual completeness. This probe doesn't measure Custom\nTabs or other uses of `ExternalAppBrowserActivity` to simplify result\nanalysis. The methodology for determining this measurement is imperfect\nto simplify implementation. Issues may include:\n
- Not measuring Beta and Release channels (due to\n`MigrationDecisionActivity` interrupting the logic).\n
- Not distinguishing between MAIN to homescreen, onboarding, session\nrestore, others?\n
- Not choosing to record a MAIN based on what the user would see and\nthus the core code path (i.e. the thing we want to measure) but rather on\nthe initial `Intent` state.\n

\nThe hope is that these cases will not have a significant impac", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_main_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary)\nwhere we can't say it was a MAIN or VIEW start up. The methodology for\ndetermining this measurement is imperfect to simplify implementation.\n

\nSee the `cold_main_app_to_first_frame` probe docs for known issues and\nmore details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_unknwn_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD VIEW start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nThe methodology for determining this measurement is imperfect to simplify\nimplementation. Issues may include:\n
-Including VIEW intents that aren't valid so take code paths similar\nto MAIN (this is speculative)\n

\nSee the `cold_main_app_to_first_frame` probe docs for other possible\nknown issues and more details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_view_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "Time between tab selection and first composite of the tab content onto the screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_tab_switch_composite", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domContentLoaded for the foreground http or https root content document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_dcl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to domContentLoaded for the foreground http or https root content document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_dcl_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds calling all request animation frame callbacks for a document before it has reached readystate complete.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_req_anim_frame_callback", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds calling all request animation frame callbacks for a document after it has reached readystate complete.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_responsiveness_req_anim_frame_callback", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA_CHECKPOINT` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_chk_pnt_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA optimize` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_optimize_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `prune_older_visits()` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_prune_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `VACUUM` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_vacuum_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Google Play Install Referrer library.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "play_store_attribution_attribution_time", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Measures the amount of time between the beginning of a sync and the end.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "recent_synced_tabs_recent_synced_tab_time_to_load", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "How long it took to query the device for the StorageStats that contain the\nfile size information. The docs say it may be expensive so we want to\nensure it's not too expensive. This value is only available on Android\n8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_query_stats_duration", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "If the search engine is pre-loaded with Fenix this value will be the base\nURL we use to build the search query for the search engine. For example:\nhttps://mysearchengine.com/?query=%s. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the value\nwill not be set.\n", + "mode": "NULLABLE", + "name": "search_default_engine_search_url", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "url2", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix/metrics/metrics.2.schema.json b/schemas/org-mozilla-fenix/metrics/metrics.2.schema.json new file mode 100644 index 000000000..7602b1e29 --- /dev/null +++ b/schemas/org-mozilla-fenix/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fenix/sync/sync.2.bq b/schemas/org-mozilla-fenix/sync/sync.2.bq new file mode 100644 index 000000000..08fd1ea65 --- /dev/null +++ b/schemas/org-mozilla-fenix/sync/sync.2.bq @@ -0,0 +1,954 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "When the sync telemetry session begins (the `SyncTelemetryImpl`\nconstructor runs).\nTypically useful for ordering \"sync\" pings.\n", + "mode": "NULLABLE", + "name": "syncs_session_start_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_failure_reason", + "type": "RECORD" + }, + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_v2_failure_reason", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The application-services developers are in the process of oxidizing parts\nof firefox sync and the related data storage code,\nwhich typically requires migrating the old storage into a new database and/or format.\n\nWhen a migration like this occurs,\na record is reported in this list the next time the sync ping is submitted.\n\n```text\n [{\n migration_type: Presently this is only ever \"webext-storage\",\n entries: The number of entries/preferences in the source (legacy) database, including ones we failed to read,\n entriesSuccessful: he number of entries/preferences (see below) which we have successfully migrated into the destination database,\n extensions: The number of distinct extensions which have at least one preference in the source (legacy) database,\n extensionsSuccessful: The number of distinct extensions which have at least one preference in the destination (migrated) database,\n openFailure: A boolean flag that is true if we hit a read error prior to . This likely indicates complete corruptio", + "mode": "NULLABLE", + "name": "syncs_migrations", + "type": "JSON" + }, + { + "description": "Recorded syncs.\nThe \"sync\" ping is not submitted if this is empty.\n```text\n [{\n when: integer ms since epoch,\n took: integer ms duration,\n didLogin: true if first sync after login,\n why:\n - \"startup\" if first sync after browser startup\n - \"schedule\" if it's been too long since the last sync\n - \"score\" if one of sync's trackers has a high score value indicating many changes since the last sync\n - \"user\" if the user manually triggered the sync\n - \"tabs\" if the user opened the synced tabs sidebar, triggering a sync\n failureReason: { // if there was an error\n name: {\"httperror\"|\"networkerror\"|...},\n code: error code for \"httperror\" and \"networkerror\" only,\n error: error string for \"othererror\" and \"unexpectederror\" only,\n from: for \"autherror\" only,\n },\n devices: [{ // excluded if we couldn't get a valid uid or local device id\n os: provided by `Services.appinfo.OS`,\n version: provided by `Services.appinfo.version`,\n id: hashed FxA d", + "mode": "NULLABLE", + "name": "syncs_syncs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How many syncs happened which were not reported in detail\ndue to being over the number of syncs we report detailed information for.\n", + "mode": "NULLABLE", + "name": "syncs_discarded", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "Hashed FxA device ID, hex string of 64 characters.\nNot included if the user is not logged in.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_device_id", + "type": "STRING" + }, + { + "description": "Hashed FxA unique ID, or string of 32 zeroes.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_fxa_uid", + "type": "STRING" + }, + { + "description": "The \"node type\" as reported by the token server.\nThis will not change from sync to sync.\nMay not be present if the token server omits this information.\n", + "mode": "NULLABLE", + "name": "syncs_sync_node_type", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_sync_uuid", + "type": "STRING" + }, + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_v2_sync_uuid", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fenix/sync/sync.2.schema.json b/schemas/org-mozilla-fenix/sync/sync.2.schema.json new file mode 100644 index 000000000..12742d64c --- /dev/null +++ b/schemas/org-mozilla-fenix/sync/sync.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fenix", + "bq_metadata_format":"structured", + "bq_table":"sync_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":false, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fennec-aurora/adjust-attribution/adjust-attribution.2.bq b/schemas/org-mozilla-fennec-aurora/adjust-attribution/adjust-attribution.2.bq new file mode 100644 index 000000000..b0f5764e3 --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/adjust-attribution/adjust-attribution.2.bq @@ -0,0 +1,647 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the Adjust AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_adgroup", + "type": "STRING" + }, + { + "description": "The name of the Adjust Campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the Adjust Creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_creative", + "type": "STRING" + }, + { + "description": "The name of the Adjust Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "adjust_attribution_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fennec-aurora/adjust-attribution/adjust-attribution.2.schema.json b/schemas/org-mozilla-fennec-aurora/adjust-attribution/adjust-attribution.2.schema.json new file mode 100644 index 000000000..aed42945e --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/adjust-attribution/adjust-attribution.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fennec_aurora", + "bq_metadata_format":"structured", + "bq_table":"adjust_attribution_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fennec-aurora/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-fennec-aurora/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fennec-aurora/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-fennec-aurora/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..12d4dab4b --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fennec_aurora", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fennec-aurora/first-session/first-session.2.bq b/schemas/org-mozilla-fennec-aurora/first-session/first-session.2.bq new file mode 100644 index 000000000..5a59cca49 --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/first-session/first-session.2.bq @@ -0,0 +1,856 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The Glean generated date and time of the installation. This is\nunique per app install, though the rest of the data in this\nping is from Adjust and will remain static across installs.\n", + "mode": "NULLABLE", + "name": "first_session_timestamp", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "first_session_adgroup", + "type": "STRING" + }, + { + "description": "The name of the campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "first_session_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "first_session_creative", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "first_session_distribution_id", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The name of the Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "first_session_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The mobile application ID in Meta's attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_app", + "type": "STRING" + }, + { + "description": "Nonce used to decrypt the encrypted Meta attribution data.\n", + "mode": "NULLABLE", + "name": "meta_attribution_nonce", + "type": "STRING" + }, + { + "description": "Value tracking user interaction with Meta attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_t", + "type": "STRING" + }, + { + "description": "The name of the utm_campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_campaign", + "type": "STRING" + }, + { + "description": "The name of the utm_content that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_content", + "type": "STRING" + }, + { + "description": "The name of the utm_medium that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_medium", + "type": "STRING" + }, + { + "description": "The name of the utm_source that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_source", + "type": "STRING" + }, + { + "description": "The name of the utm_term that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The Meta attribution data in encrypted format.\n", + "mode": "NULLABLE", + "name": "meta_attribution_data", + "type": "STRING" + }, + { + "description": "The full install referrer response.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_install_referrer_response", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fennec-aurora/first-session/first-session.2.schema.json b/schemas/org-mozilla-fennec-aurora/first-session/first-session.2.schema.json new file mode 100644 index 000000000..df8b43061 --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/first-session/first-session.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fennec_aurora", + "bq_metadata_format":"structured", + "bq_table":"first_session_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fennec-aurora/health/health.2.bq b/schemas/org-mozilla-fennec-aurora/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fennec-aurora/health/health.2.schema.json b/schemas/org-mozilla-fennec-aurora/health/health.2.schema.json new file mode 100644 index 000000000..3c8772d4c --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fennec_aurora", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fennec-aurora/metrics/metrics.2.bq b/schemas/org-mozilla-fennec-aurora/metrics/metrics.2.bq new file mode 100644 index 000000000..0f82144a2 --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/metrics/metrics.2.bq @@ -0,0 +1,39119 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_enabled_addons", + "type": "BOOL" + }, + { + "description": "Whether or not the user has installed add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_installed_addons", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Firefox is the Android Autofill provider for this user.\nprovider.\n", + "mode": "NULLABLE", + "name": "android_autofill_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Android Autofill is supported by the device and is\nsupported for this user.\n", + "mode": "NULLABLE", + "name": "android_autofill_supported", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "True if the user has dynamic toolbar enabled, false if the user has dynamic toolbar disabled.\n", + "mode": "NULLABLE", + "name": "customization_settings_dynamic_toolbar", + "type": "BOOL" + }, + { + "description": "An indication of whether the recently\nsaved section is enabled to be displayed. This was previously customize_home.recently_saved.\n", + "mode": "NULLABLE", + "name": "customize_home_bookmarks", + "type": "BOOL" + }, + { + "description": "An indication of whether Contile is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_contile", + "type": "BOOL" + }, + { + "description": "An indication of whether the Jump back\nin section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_jump_back_in", + "type": "BOOL" + }, + { + "description": "An indication of whether the most visited sites\nare enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_most_visited_sites", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_pocket", + "type": "BOOL" + }, + { + "description": "An indication of whether the Recently\nvisited section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_recently_visited", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket sponsored stories are enabled\nto be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_sponsored_pocket", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the Debug Drawer feature.\n", + "mode": "NULLABLE", + "name": "debug_drawer_debug_drawer_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "True if marketing notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "events_marketing_notification_allowed", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Is Fenix the default browser?\n", + "mode": "NULLABLE", + "name": "metrics_default_browser", + "type": "BOOL" + }, + { + "description": "Is the default wallpapper set to be shown?\n", + "mode": "NULLABLE", + "name": "metrics_default_wallpaper", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the desktop folder\n", + "mode": "NULLABLE", + "name": "metrics_has_desktop_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the mobile folder\n", + "mode": "NULLABLE", + "name": "metrics_has_mobile_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has any open NORMAL tabs.\n", + "mode": "NULLABLE", + "name": "metrics_has_open_tabs", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has recently used PWAs.\nSee recently_used_pwa_count for the actual count.\n", + "mode": "NULLABLE", + "name": "metrics_has_recent_pwas", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has top sites\n", + "mode": "NULLABLE", + "name": "metrics_has_top_sites", + "type": "BOOL" + }, + { + "description": "True if the device is a large screen device.", + "mode": "NULLABLE", + "name": "metrics_is_large_device", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "metrics_notifications_allowed", + "type": "BOOL" + }, + { + "description": "True if the device's asserted 'advertised' RAM is more than the given threshold.", + "mode": "NULLABLE", + "name": "metrics_ram_more_than_threshold", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "Whether gesture navigation is used instead of the traditional navigation bar.\n", + "mode": "NULLABLE", + "name": "navigation_bar_os_navigation_uses_gestures", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "True when app Zygote preloading with isolated processes is enabled.", + "mode": "NULLABLE", + "name": "preferences_app_zygote_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled bookmark search suggestions\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_bookmarks_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled browsing history suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_browsing_history_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled clipboard search suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_clipboard_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Measures user retention of the Global Privacy Control (GPC) setting at start-up.", + "mode": "NULLABLE", + "name": "preferences_global_privacy_control_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has the inactive tabs feature enabled.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_inactive_tabs_enabled", + "type": "BOOL" + }, + { + "description": "True when isolated content processes are enabled on the runtime.", + "mode": "NULLABLE", + "name": "preferences_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Whether or not the user has remote debugging enabled\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_remote_debugging_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled search shortcuts.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_shortcuts_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has non sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_non_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user is signed into FxA\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_signed_in_sync", + "type": "BOOL" + }, + { + "description": "A metric indicating whether or not the user has studies enabled default: true\n", + "mode": "NULLABLE", + "name": "preferences_studies_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has telemetry enabled. Note we should\nnever receive a \"false\" value for this since telemetry would\nnot send in that case.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_telemetry_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the voice search button.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_voice_search_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not pull-to-refresh functionality\nis enabled from Settings screen.\ndefault: true\n", + "mode": "NULLABLE", + "name": "pull_to_refresh_in_browser_enabled", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "An indication of whether the recent tabs /\nJump Back In section is visible on the homepage.\n", + "mode": "NULLABLE", + "name": "recent_tabs_section_visible", + "type": "BOOL" + }, + { + "description": "Whether or not the user opted out of review quality check feature.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has disabled ads.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Whether or not Nimbus has disabled the use of the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Whether or the user has completed the review quality check onboarding.\n", + "mode": "NULLABLE", + "name": "shopping_settings_user_has_onboarded", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "Whether or not Tab Strip is enabled by the user.\n", + "mode": "NULLABLE", + "name": "tab_strip_enabled", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button continue with add-ons\ndisabled on the dialog for when the extensions\nprocess crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_disable", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button try to restart add-ons\non the dialog for when the extensions process crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_retry", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "addresses_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_saved", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been updated\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_updated", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "app_menu_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "credit_cards_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "A counter of URIs visited by the user in the current session, including\npage reloads. This includes private browsing. This does not include\nbackground page requests and URIs from embedded pages but may be\nincremented without user interaction by website scripts that\nprogrammatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "events_normal_and_private_uri_count", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "The total number of operations performed by the FxA client.", + "mode": "NULLABLE", + "name": "fxa_client_operation_count", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on a bookmark from the home\nscreen. This was previously recent_bookmarks.bookmark_clicked.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmark_clicked", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked the show all button for bookmarks\non the home screen. This was previously recent_bookmarks.show_all_bookmarks.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_show_all_bookmarks", + "type": "INT64" + }, + { + "description": "The number of times the home screen was displayed to the user.\n", + "mode": "NULLABLE", + "name": "home_screen_home_screen_view_count", + "type": "INT64" + }, + { + "description": "The number of times the standard browsing mode home screen was\ndisplayed to the user. (for tile counts)\n", + "mode": "NULLABLE", + "name": "home_screen_standard_homepage_view_count", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been deleted by user.\n", + "mode": "NULLABLE", + "name": "logins_deleted", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been modified by user.\n", + "mode": "NULLABLE", + "name": "logins_modified", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been saved by user (including deleted).\n", + "mode": "NULLABLE", + "name": "logins_saved", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted locally due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_local_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted in the mirror table due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_mirror_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_write_query_count", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the desktop\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in a\nnull value. To disambiguate between a failed `desktop_bookmarks_count`\nping and 0 bookmarks, please see `has_desktop_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_desktop_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the mobile\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in\na null value. To disambiguate between a failed `mobile_bookmarks_count`\nping and 0 bookmarks, please see `has_mobile_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_mobile_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PRIVATE tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `private_tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`\n", + "mode": "NULLABLE", + "name": "metrics_private_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PWAs a user has recently used.\nThreshold for \"recency\" set in HomeActivity#PWA_RECENTLY_USED_THRESHOLD.\nCurrently we are not told by the OS when a PWA is removed by the user,\nso we use the \"recently used\" heuristic to judge how many PWAs are still\nactive, as a proxy for \"installed\". This value will only be set if the\nuser has at least *one* recently used PWA. If they have 0, this metric\nwill not be sent, resulting in a null value during analysis on the\nserver-side. To disambiguate between a failed `recently_used_pwa_count`\nmetric and 0 recent PWAs, please see `has_recent_pwas`.\n", + "mode": "NULLABLE", + "name": "metrics_recently_used_pwa_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many NORMAL tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`.\n", + "mode": "NULLABLE", + "name": "metrics_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many top sites a user has. This value will\nonly be set if the user has at least *one* top site. If they have 0,\nthis ping will not get sent, resulting in a null value. To disambiguate\nbetween a failed `top_sites_count` ping and 0 top sites, please see\n`has_top_sites`.\n", + "mode": "NULLABLE", + "name": "metrics_top_sites_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_write_query_count", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "Counts how often the loading placeholder is shown and the resulting tab\nis the same as it was before the load.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_latest_synced_tab_is_stale", + "type": "INT64" + }, + { + "description": "Counts how many times \"show all synced tabs\" button has been clicked.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_show_all_synced_tabs_clicked", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "settings_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts number of visits to a supported retailer product page\nwhile enrolled in either the control or treatment branches\nof the shopping experiment.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has closed.\n", + "mode": "NULLABLE", + "name": "tabs_tray_close_inactive_tab", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has opened.\n", + "mode": "NULLABLE", + "name": "tabs_tray_open_inactive_tab", + "type": "INT64" + }, + { + "description": "Records the number of times the user dismissed the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_dismiss_count", + "type": "INT64" + }, + { + "description": "Records the number of Terms of Use prompt impressions the user has had.", + "mode": "NULLABLE", + "name": "terms_of_use_impression_count", + "type": "INT64" + }, + { + "description": "Records the number of times the user clicked 'remind me later' on the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_remind_me_later_count", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + }, + { + "description": "The timestamp when the user was shown the privacy notice banner.", + "mode": "NULLABLE", + "name": "privacy_notice_banner_displayed_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.", + "mode": "NULLABLE", + "name": "terms_of_use_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during FxA operations, labeled by type. It is intended to be used together with `operation_count` to measure the overall error rate of FxA operations operations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fxa_client_error_count", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_write_query_error_count", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has added.\n\nThe label for this counter is ``.\n\n`source` will be: `page_action_menu` as that is the only\nentry point right now to add bookmarks.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_add", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has deleted.\n\nThe label for this counter is ``.\n\n`source` will be: `add_bookmark_toast` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_delete", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has edited.\n\nThe label for this counter is ``.\n\n`source` will be: `bookmark_edit_page` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_edit", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has opened.\n\nThe label for this counter is ``.\n\n`source` will be: `top_sites`, `awesomebar_results`, `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_open", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Fenix `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`, `widget`, `shortcut`, `topsite`\n(depending on the source from which the search started). Also added the\n`other` option for the source but it should never enter on this case.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_search_count", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- Home screen shortcuts: `*_view`\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\npr", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_write_query_error_count", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Counts the number of times a recent synced tab is opened, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_opened", + "type": "RECORD" + }, + { + "description": "Counts impressions of a recent synced tab on the homepage, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_shown", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The area that the tabs tray was accessed from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_tray_access_point", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "How many and which type of wallpapers were applied.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "wallpapers_new_wallpaper_applied", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "Size of the db after executing `run_maintenance()`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_db_size_after_maintenance", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "The size of the app's APK and related files as installed: this is expected\nto be larger than download size. This is the output of\n[StorageStats.getAppBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytes())\nso see that for details. This value is only available on Android 8+. A\nsimilar value may be available on the Google Play dashboard: we can use\nthis value to see if that value is reliable enough.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_app_bytes", + "type": "RECORD" + }, + { + "description": "The size of all cached data in the app. This is the output of\n[StorageStats.getCacheBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getCacheBytes())\nso see that for details. This value is only available on Android 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_cache_bytes", + "type": "RECORD" + }, + { + "description": "The size of all data minus `cache_bytes`. This is the output of\n[StorageStats.getDataBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getDataBytes())\nexcept we subtract the value of `cache_bytes` so the cache is not measured\nredundantly; see that method for details. This value is only available on\nAndroid 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_data_dir_bytes", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The Nimbus context object that is recorded to Glean\n", + "mode": "NULLABLE", + "name": "nimbus_system_recorded_nimbus_context", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "A counter of the number of all addresses that are currently saved by user.\n", + "mode": "NULLABLE", + "name": "addresses_saved_all", + "type": "INT64" + }, + { + "description": "Image-decode Error from AOM decoder\n", + "mode": "NULLABLE", + "name": "avif_aom_decode_error", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "Counter of number of credit cards that are currently stored by user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved_all", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of bookmarked items appearing in the\nBookmarks section on the home page. This was previously recent_bookmarks.recent_bookmarks_count.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmarks_count", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "Counter of number of passwords currently saved by user.\n", + "mode": "NULLABLE", + "name": "logins_saved_all", + "type": "INT64" + }, + { + "description": "The total amount of memory this device in bytes, when available will be MemoryInfo.advertisedMem otherwise it will be MemoryInfo.totalMem. This doesn't represent memory available to the application however.\n", + "mode": "NULLABLE", + "name": "metrics_device_total_ram", + "type": "INT64" + }, + { + "description": "How many inactive tabs does the user have, checked when the user opens\nthe tabs tray.\nValue will be 0 if the feature is disabled.\n", + "mode": "NULLABLE", + "name": "metrics_inactive_tabs_count", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.", + "mode": "NULLABLE", + "name": "terms_of_use_version", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "What opening screen preference the user has selected\nunder \"Customize Home\".\n\"homepage,\" \"last tab,\" or \"homepage after 4 hours\"\ndefault: \"homepage after 4 hours\"\n", + "mode": "NULLABLE", + "name": "customize_home_opening_screen", + "type": "STRING" + }, + { + "description": "A user chose a filter for the downloads page.\nThe filter can be All, Image, Video, Document or Other.\n", + "mode": "NULLABLE", + "name": "downloads_filtered", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310\n", + "mode": "NULLABLE", + "name": "geckoview_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1\n", + "mode": "NULLABLE", + "name": "geckoview_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string containing the Adjust ad group ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_ad_group", + "type": "STRING" + }, + { + "description": "A string containing the Adjust campaign ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_campaign", + "type": "STRING" + }, + { + "description": "A string containing the Adjust creative ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_creative", + "type": "STRING" + }, + { + "description": "A string containing the Adjust network ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_network", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab closing:\nMANUAL, ONE_DAY, ONE_WEEK, ONE_MONTH\n", + "mode": "NULLABLE", + "name": "metrics_close_tab_setting", + "type": "STRING" + }, + { + "description": "The name of the default browser on device if and only if it's a Mozilla\nowned product\n", + "mode": "NULLABLE", + "name": "metrics_default_moz_browser", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "metrics_distribution_id", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab view:\nGRID, LIST\n", + "mode": "NULLABLE", + "name": "metrics_tab_view_setting", + "type": "STRING" + }, + { + "description": "Measures user retention of the DNS over HTTPS (DoH) setting at start-up.\nExample values include: \"Default\", \"Increased\", \"Max\", \"Off\".\n", + "mode": "NULLABLE", + "name": "preferences_doh_protection_level", + "type": "STRING" + }, + { + "description": "What type of enhanced tracking protection the user has enabled.\n\"standard,\" \"strict,\" \"custom,\" or \"\" (if disabled)\ndefault: \"standard\"\n", + "mode": "NULLABLE", + "name": "preferences_enhanced_tracking_protection", + "type": "STRING" + }, + { + "description": "The option user has selected in the \"Custom\" mode of the\nEnhanced Tracking Protection settings.\nPossible values:\n- total-protection for “Isolate cross-site cookies”\n- social for “Cross-site and social media trackers”\n- unvisited for “Cookies from unvisited sites”\n- third-party for “All third-party cookies..”\n- all for “All cookies..”\n", + "mode": "NULLABLE", + "name": "preferences_etp_custom_cookies_selection", + "type": "STRING" + }, + { + "description": "Measures user retention of the HTTPS-Only setting at start-up.\nExample values include: \"DISABLED\", \"ENABLED_PRIVATE_ONLY\", \"ENABLED\".\n", + "mode": "NULLABLE", + "name": "preferences_https_only_mode", + "type": "STRING" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in expanded toolbar.\nPossible values are: bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_expanded_shortcut", + "type": "STRING" + }, + { + "description": "The mode of the toolbar. Possible values are: simple or expanded.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_mode_setting", + "type": "STRING" + }, + { + "description": "The position of the toolbar\ndefault: bottom (defaults to top if the user has accessibility services)\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_position_setting", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in simple toolbar.\nPossible values are: new_tab, share, bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_simple_shortcut", + "type": "STRING" + }, + { + "description": "The theme the user has enabled. \"light,\" \"dark,\" \"system,\" or \"battery\"\ndefault: \"system\" for API 28+, else \"light\"\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine identifier. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_code", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine name. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_name", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "Record whether the user chooses an option from the dropdown.\n", + "mode": "NULLABLE", + "name": "webcompatreporting_reason_dropdown", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "addons_enabled_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "addons_installed_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "metrics_mozilla_products", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_accessibility_services", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_sync_items", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in a browser tab (normal or private).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_browser_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in custom tab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_custom_tab_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in home screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_home_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "The time taken to build a webrender frame. This involves calculating the visibility of primitives, requesting resources, and building the render passes which will be used to render the frame.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time taken to build a webrender scene. This occurs each time webrender receives a new display list. This additionally includes blob rasterization time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_scenebuild_time", + "type": "RECORD" + }, + { + "description": "The time taken to do a webrender scene swap. This is book-keeping that APZ must perform once webrender has built a new scene.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The time that it takes to load the Search content.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics_search_page_load_time", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "Duration of a bookmarks awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_bookmark_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a clipboard awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_clipboard_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a history awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_history_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a search engine awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_search_engine_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a session awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_session_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a shortcuts awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_shortcuts_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a synced tabs awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_synced_tabs_suggestions", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "The duration of `FenixApplication.onCreate` in the main process. This does\nnot measure the duration of migration code (via\n`MigratingFenixApplication` included in the Beta and Release channels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_application_on_create", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD MAIN start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nNotably, this duration omits the time from process start to the\ninitializer (which includes a lengthy dex operation) and the time from\nthe first frame to visual completeness. This probe doesn't measure Custom\nTabs or other uses of `ExternalAppBrowserActivity` to simplify result\nanalysis. The methodology for determining this measurement is imperfect\nto simplify implementation. Issues may include:\n
- Not measuring Beta and Release channels (due to\n`MigrationDecisionActivity` interrupting the logic).\n
- Not distinguishing between MAIN to homescreen, onboarding, session\nrestore, others?\n
- Not choosing to record a MAIN based on what the user would see and\nthus the core code path (i.e. the thing we want to measure) but rather on\nthe initial `Intent` state.\n

\nThe hope is that these cases will not have a significant impac", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_main_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary)\nwhere we can't say it was a MAIN or VIEW start up. The methodology for\ndetermining this measurement is imperfect to simplify implementation.\n

\nSee the `cold_main_app_to_first_frame` probe docs for known issues and\nmore details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_unknwn_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD VIEW start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nThe methodology for determining this measurement is imperfect to simplify\nimplementation. Issues may include:\n
-Including VIEW intents that aren't valid so take code paths similar\nto MAIN (this is speculative)\n

\nSee the `cold_main_app_to_first_frame` probe docs for other possible\nknown issues and more details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_view_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "Time between tab selection and first composite of the tab content onto the screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_tab_switch_composite", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domContentLoaded for the foreground http or https root content document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_dcl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to domContentLoaded for the foreground http or https root content document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_dcl_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds calling all request animation frame callbacks for a document before it has reached readystate complete.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_req_anim_frame_callback", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds calling all request animation frame callbacks for a document after it has reached readystate complete.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_responsiveness_req_anim_frame_callback", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA_CHECKPOINT` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_chk_pnt_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA optimize` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_optimize_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `prune_older_visits()` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_prune_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `VACUUM` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_vacuum_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Google Play Install Referrer library.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "play_store_attribution_attribution_time", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Measures the amount of time between the beginning of a sync and the end.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "recent_synced_tabs_recent_synced_tab_time_to_load", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "How long it took to query the device for the StorageStats that contain the\nfile size information. The docs say it may be expensive so we want to\nensure it's not too expensive. This value is only available on Android\n8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_query_stats_duration", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "If the search engine is pre-loaded with Fenix this value will be the base\nURL we use to build the search query for the search engine. For example:\nhttps://mysearchengine.com/?query=%s. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the value\nwill not be set.\n", + "mode": "NULLABLE", + "name": "search_default_engine_search_url", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "url2", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fennec-aurora/metrics/metrics.2.schema.json b/schemas/org-mozilla-fennec-aurora/metrics/metrics.2.schema.json new file mode 100644 index 000000000..40da7ded3 --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fennec_aurora", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-fennec-aurora/sync/sync.2.bq b/schemas/org-mozilla-fennec-aurora/sync/sync.2.bq new file mode 100644 index 000000000..08fd1ea65 --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/sync/sync.2.bq @@ -0,0 +1,954 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "When the sync telemetry session begins (the `SyncTelemetryImpl`\nconstructor runs).\nTypically useful for ordering \"sync\" pings.\n", + "mode": "NULLABLE", + "name": "syncs_session_start_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_failure_reason", + "type": "RECORD" + }, + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_v2_failure_reason", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The application-services developers are in the process of oxidizing parts\nof firefox sync and the related data storage code,\nwhich typically requires migrating the old storage into a new database and/or format.\n\nWhen a migration like this occurs,\na record is reported in this list the next time the sync ping is submitted.\n\n```text\n [{\n migration_type: Presently this is only ever \"webext-storage\",\n entries: The number of entries/preferences in the source (legacy) database, including ones we failed to read,\n entriesSuccessful: he number of entries/preferences (see below) which we have successfully migrated into the destination database,\n extensions: The number of distinct extensions which have at least one preference in the source (legacy) database,\n extensionsSuccessful: The number of distinct extensions which have at least one preference in the destination (migrated) database,\n openFailure: A boolean flag that is true if we hit a read error prior to . This likely indicates complete corruptio", + "mode": "NULLABLE", + "name": "syncs_migrations", + "type": "JSON" + }, + { + "description": "Recorded syncs.\nThe \"sync\" ping is not submitted if this is empty.\n```text\n [{\n when: integer ms since epoch,\n took: integer ms duration,\n didLogin: true if first sync after login,\n why:\n - \"startup\" if first sync after browser startup\n - \"schedule\" if it's been too long since the last sync\n - \"score\" if one of sync's trackers has a high score value indicating many changes since the last sync\n - \"user\" if the user manually triggered the sync\n - \"tabs\" if the user opened the synced tabs sidebar, triggering a sync\n failureReason: { // if there was an error\n name: {\"httperror\"|\"networkerror\"|...},\n code: error code for \"httperror\" and \"networkerror\" only,\n error: error string for \"othererror\" and \"unexpectederror\" only,\n from: for \"autherror\" only,\n },\n devices: [{ // excluded if we couldn't get a valid uid or local device id\n os: provided by `Services.appinfo.OS`,\n version: provided by `Services.appinfo.version`,\n id: hashed FxA d", + "mode": "NULLABLE", + "name": "syncs_syncs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How many syncs happened which were not reported in detail\ndue to being over the number of syncs we report detailed information for.\n", + "mode": "NULLABLE", + "name": "syncs_discarded", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "Hashed FxA device ID, hex string of 64 characters.\nNot included if the user is not logged in.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_device_id", + "type": "STRING" + }, + { + "description": "Hashed FxA unique ID, or string of 32 zeroes.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_fxa_uid", + "type": "STRING" + }, + { + "description": "The \"node type\" as reported by the token server.\nThis will not change from sync to sync.\nMay not be present if the token server omits this information.\n", + "mode": "NULLABLE", + "name": "syncs_sync_node_type", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_sync_uuid", + "type": "STRING" + }, + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_v2_sync_uuid", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-fennec-aurora/sync/sync.2.schema.json b/schemas/org-mozilla-fennec-aurora/sync/sync.2.schema.json new file mode 100644 index 000000000..fd8f5e497 --- /dev/null +++ b/schemas/org-mozilla-fennec-aurora/sync/sync.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_fennec_aurora", + "bq_metadata_format":"structured", + "bq_table":"sync_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":false, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-beta/adjust-attribution/adjust-attribution.2.bq b/schemas/org-mozilla-firefox-beta/adjust-attribution/adjust-attribution.2.bq new file mode 100644 index 000000000..b0f5764e3 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/adjust-attribution/adjust-attribution.2.bq @@ -0,0 +1,647 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the Adjust AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_adgroup", + "type": "STRING" + }, + { + "description": "The name of the Adjust Campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the Adjust Creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_creative", + "type": "STRING" + }, + { + "description": "The name of the Adjust Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "adjust_attribution_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-beta/adjust-attribution/adjust-attribution.2.schema.json b/schemas/org-mozilla-firefox-beta/adjust-attribution/adjust-attribution.2.schema.json new file mode 100644 index 000000000..740720c71 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/adjust-attribution/adjust-attribution.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_beta", + "bq_metadata_format":"structured", + "bq_table":"adjust_attribution_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-beta/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-firefox-beta/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-beta/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-firefox-beta/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..5ab5c47e8 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_beta", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-beta/first-session/first-session.2.bq b/schemas/org-mozilla-firefox-beta/first-session/first-session.2.bq new file mode 100644 index 000000000..5a59cca49 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/first-session/first-session.2.bq @@ -0,0 +1,856 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The Glean generated date and time of the installation. This is\nunique per app install, though the rest of the data in this\nping is from Adjust and will remain static across installs.\n", + "mode": "NULLABLE", + "name": "first_session_timestamp", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "first_session_adgroup", + "type": "STRING" + }, + { + "description": "The name of the campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "first_session_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "first_session_creative", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "first_session_distribution_id", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The name of the Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "first_session_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The mobile application ID in Meta's attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_app", + "type": "STRING" + }, + { + "description": "Nonce used to decrypt the encrypted Meta attribution data.\n", + "mode": "NULLABLE", + "name": "meta_attribution_nonce", + "type": "STRING" + }, + { + "description": "Value tracking user interaction with Meta attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_t", + "type": "STRING" + }, + { + "description": "The name of the utm_campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_campaign", + "type": "STRING" + }, + { + "description": "The name of the utm_content that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_content", + "type": "STRING" + }, + { + "description": "The name of the utm_medium that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_medium", + "type": "STRING" + }, + { + "description": "The name of the utm_source that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_source", + "type": "STRING" + }, + { + "description": "The name of the utm_term that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The Meta attribution data in encrypted format.\n", + "mode": "NULLABLE", + "name": "meta_attribution_data", + "type": "STRING" + }, + { + "description": "The full install referrer response.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_install_referrer_response", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-beta/first-session/first-session.2.schema.json b/schemas/org-mozilla-firefox-beta/first-session/first-session.2.schema.json new file mode 100644 index 000000000..df348a480 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/first-session/first-session.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_beta", + "bq_metadata_format":"structured", + "bq_table":"first_session_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-beta/health/health.2.bq b/schemas/org-mozilla-firefox-beta/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-beta/health/health.2.schema.json b/schemas/org-mozilla-firefox-beta/health/health.2.schema.json new file mode 100644 index 000000000..7ae2b6d06 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_beta", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-beta/metrics/metrics.2.bq b/schemas/org-mozilla-firefox-beta/metrics/metrics.2.bq new file mode 100644 index 000000000..0f82144a2 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/metrics/metrics.2.bq @@ -0,0 +1,39119 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_enabled_addons", + "type": "BOOL" + }, + { + "description": "Whether or not the user has installed add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_installed_addons", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Firefox is the Android Autofill provider for this user.\nprovider.\n", + "mode": "NULLABLE", + "name": "android_autofill_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Android Autofill is supported by the device and is\nsupported for this user.\n", + "mode": "NULLABLE", + "name": "android_autofill_supported", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "True if the user has dynamic toolbar enabled, false if the user has dynamic toolbar disabled.\n", + "mode": "NULLABLE", + "name": "customization_settings_dynamic_toolbar", + "type": "BOOL" + }, + { + "description": "An indication of whether the recently\nsaved section is enabled to be displayed. This was previously customize_home.recently_saved.\n", + "mode": "NULLABLE", + "name": "customize_home_bookmarks", + "type": "BOOL" + }, + { + "description": "An indication of whether Contile is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_contile", + "type": "BOOL" + }, + { + "description": "An indication of whether the Jump back\nin section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_jump_back_in", + "type": "BOOL" + }, + { + "description": "An indication of whether the most visited sites\nare enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_most_visited_sites", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_pocket", + "type": "BOOL" + }, + { + "description": "An indication of whether the Recently\nvisited section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_recently_visited", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket sponsored stories are enabled\nto be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_sponsored_pocket", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the Debug Drawer feature.\n", + "mode": "NULLABLE", + "name": "debug_drawer_debug_drawer_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "True if marketing notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "events_marketing_notification_allowed", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Is Fenix the default browser?\n", + "mode": "NULLABLE", + "name": "metrics_default_browser", + "type": "BOOL" + }, + { + "description": "Is the default wallpapper set to be shown?\n", + "mode": "NULLABLE", + "name": "metrics_default_wallpaper", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the desktop folder\n", + "mode": "NULLABLE", + "name": "metrics_has_desktop_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the mobile folder\n", + "mode": "NULLABLE", + "name": "metrics_has_mobile_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has any open NORMAL tabs.\n", + "mode": "NULLABLE", + "name": "metrics_has_open_tabs", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has recently used PWAs.\nSee recently_used_pwa_count for the actual count.\n", + "mode": "NULLABLE", + "name": "metrics_has_recent_pwas", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has top sites\n", + "mode": "NULLABLE", + "name": "metrics_has_top_sites", + "type": "BOOL" + }, + { + "description": "True if the device is a large screen device.", + "mode": "NULLABLE", + "name": "metrics_is_large_device", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "metrics_notifications_allowed", + "type": "BOOL" + }, + { + "description": "True if the device's asserted 'advertised' RAM is more than the given threshold.", + "mode": "NULLABLE", + "name": "metrics_ram_more_than_threshold", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "Whether gesture navigation is used instead of the traditional navigation bar.\n", + "mode": "NULLABLE", + "name": "navigation_bar_os_navigation_uses_gestures", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "True when app Zygote preloading with isolated processes is enabled.", + "mode": "NULLABLE", + "name": "preferences_app_zygote_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled bookmark search suggestions\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_bookmarks_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled browsing history suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_browsing_history_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled clipboard search suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_clipboard_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Measures user retention of the Global Privacy Control (GPC) setting at start-up.", + "mode": "NULLABLE", + "name": "preferences_global_privacy_control_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has the inactive tabs feature enabled.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_inactive_tabs_enabled", + "type": "BOOL" + }, + { + "description": "True when isolated content processes are enabled on the runtime.", + "mode": "NULLABLE", + "name": "preferences_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Whether or not the user has remote debugging enabled\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_remote_debugging_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled search shortcuts.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_shortcuts_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has non sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_non_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user is signed into FxA\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_signed_in_sync", + "type": "BOOL" + }, + { + "description": "A metric indicating whether or not the user has studies enabled default: true\n", + "mode": "NULLABLE", + "name": "preferences_studies_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has telemetry enabled. Note we should\nnever receive a \"false\" value for this since telemetry would\nnot send in that case.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_telemetry_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the voice search button.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_voice_search_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not pull-to-refresh functionality\nis enabled from Settings screen.\ndefault: true\n", + "mode": "NULLABLE", + "name": "pull_to_refresh_in_browser_enabled", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "An indication of whether the recent tabs /\nJump Back In section is visible on the homepage.\n", + "mode": "NULLABLE", + "name": "recent_tabs_section_visible", + "type": "BOOL" + }, + { + "description": "Whether or not the user opted out of review quality check feature.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has disabled ads.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Whether or not Nimbus has disabled the use of the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Whether or the user has completed the review quality check onboarding.\n", + "mode": "NULLABLE", + "name": "shopping_settings_user_has_onboarded", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "Whether or not Tab Strip is enabled by the user.\n", + "mode": "NULLABLE", + "name": "tab_strip_enabled", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button continue with add-ons\ndisabled on the dialog for when the extensions\nprocess crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_disable", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button try to restart add-ons\non the dialog for when the extensions process crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_retry", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "addresses_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_saved", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been updated\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_updated", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "app_menu_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "credit_cards_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "A counter of URIs visited by the user in the current session, including\npage reloads. This includes private browsing. This does not include\nbackground page requests and URIs from embedded pages but may be\nincremented without user interaction by website scripts that\nprogrammatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "events_normal_and_private_uri_count", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "The total number of operations performed by the FxA client.", + "mode": "NULLABLE", + "name": "fxa_client_operation_count", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on a bookmark from the home\nscreen. This was previously recent_bookmarks.bookmark_clicked.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmark_clicked", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked the show all button for bookmarks\non the home screen. This was previously recent_bookmarks.show_all_bookmarks.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_show_all_bookmarks", + "type": "INT64" + }, + { + "description": "The number of times the home screen was displayed to the user.\n", + "mode": "NULLABLE", + "name": "home_screen_home_screen_view_count", + "type": "INT64" + }, + { + "description": "The number of times the standard browsing mode home screen was\ndisplayed to the user. (for tile counts)\n", + "mode": "NULLABLE", + "name": "home_screen_standard_homepage_view_count", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been deleted by user.\n", + "mode": "NULLABLE", + "name": "logins_deleted", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been modified by user.\n", + "mode": "NULLABLE", + "name": "logins_modified", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been saved by user (including deleted).\n", + "mode": "NULLABLE", + "name": "logins_saved", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted locally due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_local_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted in the mirror table due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_mirror_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_write_query_count", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the desktop\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in a\nnull value. To disambiguate between a failed `desktop_bookmarks_count`\nping and 0 bookmarks, please see `has_desktop_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_desktop_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the mobile\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in\na null value. To disambiguate between a failed `mobile_bookmarks_count`\nping and 0 bookmarks, please see `has_mobile_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_mobile_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PRIVATE tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `private_tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`\n", + "mode": "NULLABLE", + "name": "metrics_private_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PWAs a user has recently used.\nThreshold for \"recency\" set in HomeActivity#PWA_RECENTLY_USED_THRESHOLD.\nCurrently we are not told by the OS when a PWA is removed by the user,\nso we use the \"recently used\" heuristic to judge how many PWAs are still\nactive, as a proxy for \"installed\". This value will only be set if the\nuser has at least *one* recently used PWA. If they have 0, this metric\nwill not be sent, resulting in a null value during analysis on the\nserver-side. To disambiguate between a failed `recently_used_pwa_count`\nmetric and 0 recent PWAs, please see `has_recent_pwas`.\n", + "mode": "NULLABLE", + "name": "metrics_recently_used_pwa_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many NORMAL tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`.\n", + "mode": "NULLABLE", + "name": "metrics_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many top sites a user has. This value will\nonly be set if the user has at least *one* top site. If they have 0,\nthis ping will not get sent, resulting in a null value. To disambiguate\nbetween a failed `top_sites_count` ping and 0 top sites, please see\n`has_top_sites`.\n", + "mode": "NULLABLE", + "name": "metrics_top_sites_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_write_query_count", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "Counts how often the loading placeholder is shown and the resulting tab\nis the same as it was before the load.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_latest_synced_tab_is_stale", + "type": "INT64" + }, + { + "description": "Counts how many times \"show all synced tabs\" button has been clicked.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_show_all_synced_tabs_clicked", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "settings_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts number of visits to a supported retailer product page\nwhile enrolled in either the control or treatment branches\nof the shopping experiment.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has closed.\n", + "mode": "NULLABLE", + "name": "tabs_tray_close_inactive_tab", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has opened.\n", + "mode": "NULLABLE", + "name": "tabs_tray_open_inactive_tab", + "type": "INT64" + }, + { + "description": "Records the number of times the user dismissed the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_dismiss_count", + "type": "INT64" + }, + { + "description": "Records the number of Terms of Use prompt impressions the user has had.", + "mode": "NULLABLE", + "name": "terms_of_use_impression_count", + "type": "INT64" + }, + { + "description": "Records the number of times the user clicked 'remind me later' on the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_remind_me_later_count", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + }, + { + "description": "The timestamp when the user was shown the privacy notice banner.", + "mode": "NULLABLE", + "name": "privacy_notice_banner_displayed_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.", + "mode": "NULLABLE", + "name": "terms_of_use_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during FxA operations, labeled by type. It is intended to be used together with `operation_count` to measure the overall error rate of FxA operations operations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fxa_client_error_count", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_write_query_error_count", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has added.\n\nThe label for this counter is ``.\n\n`source` will be: `page_action_menu` as that is the only\nentry point right now to add bookmarks.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_add", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has deleted.\n\nThe label for this counter is ``.\n\n`source` will be: `add_bookmark_toast` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_delete", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has edited.\n\nThe label for this counter is ``.\n\n`source` will be: `bookmark_edit_page` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_edit", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has opened.\n\nThe label for this counter is ``.\n\n`source` will be: `top_sites`, `awesomebar_results`, `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_open", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Fenix `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`, `widget`, `shortcut`, `topsite`\n(depending on the source from which the search started). Also added the\n`other` option for the source but it should never enter on this case.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_search_count", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- Home screen shortcuts: `*_view`\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\npr", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_write_query_error_count", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Counts the number of times a recent synced tab is opened, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_opened", + "type": "RECORD" + }, + { + "description": "Counts impressions of a recent synced tab on the homepage, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_shown", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The area that the tabs tray was accessed from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_tray_access_point", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "How many and which type of wallpapers were applied.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "wallpapers_new_wallpaper_applied", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "Size of the db after executing `run_maintenance()`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_db_size_after_maintenance", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "The size of the app's APK and related files as installed: this is expected\nto be larger than download size. This is the output of\n[StorageStats.getAppBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytes())\nso see that for details. This value is only available on Android 8+. A\nsimilar value may be available on the Google Play dashboard: we can use\nthis value to see if that value is reliable enough.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_app_bytes", + "type": "RECORD" + }, + { + "description": "The size of all cached data in the app. This is the output of\n[StorageStats.getCacheBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getCacheBytes())\nso see that for details. This value is only available on Android 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_cache_bytes", + "type": "RECORD" + }, + { + "description": "The size of all data minus `cache_bytes`. This is the output of\n[StorageStats.getDataBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getDataBytes())\nexcept we subtract the value of `cache_bytes` so the cache is not measured\nredundantly; see that method for details. This value is only available on\nAndroid 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_data_dir_bytes", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The Nimbus context object that is recorded to Glean\n", + "mode": "NULLABLE", + "name": "nimbus_system_recorded_nimbus_context", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "A counter of the number of all addresses that are currently saved by user.\n", + "mode": "NULLABLE", + "name": "addresses_saved_all", + "type": "INT64" + }, + { + "description": "Image-decode Error from AOM decoder\n", + "mode": "NULLABLE", + "name": "avif_aom_decode_error", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "Counter of number of credit cards that are currently stored by user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved_all", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of bookmarked items appearing in the\nBookmarks section on the home page. This was previously recent_bookmarks.recent_bookmarks_count.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmarks_count", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "Counter of number of passwords currently saved by user.\n", + "mode": "NULLABLE", + "name": "logins_saved_all", + "type": "INT64" + }, + { + "description": "The total amount of memory this device in bytes, when available will be MemoryInfo.advertisedMem otherwise it will be MemoryInfo.totalMem. This doesn't represent memory available to the application however.\n", + "mode": "NULLABLE", + "name": "metrics_device_total_ram", + "type": "INT64" + }, + { + "description": "How many inactive tabs does the user have, checked when the user opens\nthe tabs tray.\nValue will be 0 if the feature is disabled.\n", + "mode": "NULLABLE", + "name": "metrics_inactive_tabs_count", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.", + "mode": "NULLABLE", + "name": "terms_of_use_version", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "What opening screen preference the user has selected\nunder \"Customize Home\".\n\"homepage,\" \"last tab,\" or \"homepage after 4 hours\"\ndefault: \"homepage after 4 hours\"\n", + "mode": "NULLABLE", + "name": "customize_home_opening_screen", + "type": "STRING" + }, + { + "description": "A user chose a filter for the downloads page.\nThe filter can be All, Image, Video, Document or Other.\n", + "mode": "NULLABLE", + "name": "downloads_filtered", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310\n", + "mode": "NULLABLE", + "name": "geckoview_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1\n", + "mode": "NULLABLE", + "name": "geckoview_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string containing the Adjust ad group ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_ad_group", + "type": "STRING" + }, + { + "description": "A string containing the Adjust campaign ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_campaign", + "type": "STRING" + }, + { + "description": "A string containing the Adjust creative ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_creative", + "type": "STRING" + }, + { + "description": "A string containing the Adjust network ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_network", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab closing:\nMANUAL, ONE_DAY, ONE_WEEK, ONE_MONTH\n", + "mode": "NULLABLE", + "name": "metrics_close_tab_setting", + "type": "STRING" + }, + { + "description": "The name of the default browser on device if and only if it's a Mozilla\nowned product\n", + "mode": "NULLABLE", + "name": "metrics_default_moz_browser", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "metrics_distribution_id", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab view:\nGRID, LIST\n", + "mode": "NULLABLE", + "name": "metrics_tab_view_setting", + "type": "STRING" + }, + { + "description": "Measures user retention of the DNS over HTTPS (DoH) setting at start-up.\nExample values include: \"Default\", \"Increased\", \"Max\", \"Off\".\n", + "mode": "NULLABLE", + "name": "preferences_doh_protection_level", + "type": "STRING" + }, + { + "description": "What type of enhanced tracking protection the user has enabled.\n\"standard,\" \"strict,\" \"custom,\" or \"\" (if disabled)\ndefault: \"standard\"\n", + "mode": "NULLABLE", + "name": "preferences_enhanced_tracking_protection", + "type": "STRING" + }, + { + "description": "The option user has selected in the \"Custom\" mode of the\nEnhanced Tracking Protection settings.\nPossible values:\n- total-protection for “Isolate cross-site cookies”\n- social for “Cross-site and social media trackers”\n- unvisited for “Cookies from unvisited sites”\n- third-party for “All third-party cookies..”\n- all for “All cookies..”\n", + "mode": "NULLABLE", + "name": "preferences_etp_custom_cookies_selection", + "type": "STRING" + }, + { + "description": "Measures user retention of the HTTPS-Only setting at start-up.\nExample values include: \"DISABLED\", \"ENABLED_PRIVATE_ONLY\", \"ENABLED\".\n", + "mode": "NULLABLE", + "name": "preferences_https_only_mode", + "type": "STRING" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in expanded toolbar.\nPossible values are: bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_expanded_shortcut", + "type": "STRING" + }, + { + "description": "The mode of the toolbar. Possible values are: simple or expanded.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_mode_setting", + "type": "STRING" + }, + { + "description": "The position of the toolbar\ndefault: bottom (defaults to top if the user has accessibility services)\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_position_setting", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in simple toolbar.\nPossible values are: new_tab, share, bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_simple_shortcut", + "type": "STRING" + }, + { + "description": "The theme the user has enabled. \"light,\" \"dark,\" \"system,\" or \"battery\"\ndefault: \"system\" for API 28+, else \"light\"\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine identifier. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_code", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine name. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_name", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "Record whether the user chooses an option from the dropdown.\n", + "mode": "NULLABLE", + "name": "webcompatreporting_reason_dropdown", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "addons_enabled_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "addons_installed_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "metrics_mozilla_products", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_accessibility_services", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_sync_items", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in a browser tab (normal or private).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_browser_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in custom tab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_custom_tab_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in home screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_home_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "The time taken to build a webrender frame. This involves calculating the visibility of primitives, requesting resources, and building the render passes which will be used to render the frame.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time taken to build a webrender scene. This occurs each time webrender receives a new display list. This additionally includes blob rasterization time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_scenebuild_time", + "type": "RECORD" + }, + { + "description": "The time taken to do a webrender scene swap. This is book-keeping that APZ must perform once webrender has built a new scene.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The time that it takes to load the Search content.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics_search_page_load_time", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "Duration of a bookmarks awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_bookmark_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a clipboard awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_clipboard_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a history awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_history_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a search engine awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_search_engine_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a session awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_session_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a shortcuts awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_shortcuts_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a synced tabs awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_synced_tabs_suggestions", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "The duration of `FenixApplication.onCreate` in the main process. This does\nnot measure the duration of migration code (via\n`MigratingFenixApplication` included in the Beta and Release channels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_application_on_create", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD MAIN start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nNotably, this duration omits the time from process start to the\ninitializer (which includes a lengthy dex operation) and the time from\nthe first frame to visual completeness. This probe doesn't measure Custom\nTabs or other uses of `ExternalAppBrowserActivity` to simplify result\nanalysis. The methodology for determining this measurement is imperfect\nto simplify implementation. Issues may include:\n
- Not measuring Beta and Release channels (due to\n`MigrationDecisionActivity` interrupting the logic).\n
- Not distinguishing between MAIN to homescreen, onboarding, session\nrestore, others?\n
- Not choosing to record a MAIN based on what the user would see and\nthus the core code path (i.e. the thing we want to measure) but rather on\nthe initial `Intent` state.\n

\nThe hope is that these cases will not have a significant impac", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_main_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary)\nwhere we can't say it was a MAIN or VIEW start up. The methodology for\ndetermining this measurement is imperfect to simplify implementation.\n

\nSee the `cold_main_app_to_first_frame` probe docs for known issues and\nmore details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_unknwn_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD VIEW start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nThe methodology for determining this measurement is imperfect to simplify\nimplementation. Issues may include:\n
-Including VIEW intents that aren't valid so take code paths similar\nto MAIN (this is speculative)\n

\nSee the `cold_main_app_to_first_frame` probe docs for other possible\nknown issues and more details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_view_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "Time between tab selection and first composite of the tab content onto the screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_tab_switch_composite", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domContentLoaded for the foreground http or https root content document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_dcl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to domContentLoaded for the foreground http or https root content document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_dcl_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds calling all request animation frame callbacks for a document before it has reached readystate complete.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_req_anim_frame_callback", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds calling all request animation frame callbacks for a document after it has reached readystate complete.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_responsiveness_req_anim_frame_callback", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA_CHECKPOINT` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_chk_pnt_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA optimize` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_optimize_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `prune_older_visits()` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_prune_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `VACUUM` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_vacuum_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Google Play Install Referrer library.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "play_store_attribution_attribution_time", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Measures the amount of time between the beginning of a sync and the end.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "recent_synced_tabs_recent_synced_tab_time_to_load", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "How long it took to query the device for the StorageStats that contain the\nfile size information. The docs say it may be expensive so we want to\nensure it's not too expensive. This value is only available on Android\n8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_query_stats_duration", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "If the search engine is pre-loaded with Fenix this value will be the base\nURL we use to build the search query for the search engine. For example:\nhttps://mysearchengine.com/?query=%s. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the value\nwill not be set.\n", + "mode": "NULLABLE", + "name": "search_default_engine_search_url", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "url2", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-beta/metrics/metrics.2.schema.json b/schemas/org-mozilla-firefox-beta/metrics/metrics.2.schema.json new file mode 100644 index 000000000..0266dabf4 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_beta", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-beta/sync/sync.2.bq b/schemas/org-mozilla-firefox-beta/sync/sync.2.bq new file mode 100644 index 000000000..08fd1ea65 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/sync/sync.2.bq @@ -0,0 +1,954 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "When the sync telemetry session begins (the `SyncTelemetryImpl`\nconstructor runs).\nTypically useful for ordering \"sync\" pings.\n", + "mode": "NULLABLE", + "name": "syncs_session_start_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_failure_reason", + "type": "RECORD" + }, + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_v2_failure_reason", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The application-services developers are in the process of oxidizing parts\nof firefox sync and the related data storage code,\nwhich typically requires migrating the old storage into a new database and/or format.\n\nWhen a migration like this occurs,\na record is reported in this list the next time the sync ping is submitted.\n\n```text\n [{\n migration_type: Presently this is only ever \"webext-storage\",\n entries: The number of entries/preferences in the source (legacy) database, including ones we failed to read,\n entriesSuccessful: he number of entries/preferences (see below) which we have successfully migrated into the destination database,\n extensions: The number of distinct extensions which have at least one preference in the source (legacy) database,\n extensionsSuccessful: The number of distinct extensions which have at least one preference in the destination (migrated) database,\n openFailure: A boolean flag that is true if we hit a read error prior to . This likely indicates complete corruptio", + "mode": "NULLABLE", + "name": "syncs_migrations", + "type": "JSON" + }, + { + "description": "Recorded syncs.\nThe \"sync\" ping is not submitted if this is empty.\n```text\n [{\n when: integer ms since epoch,\n took: integer ms duration,\n didLogin: true if first sync after login,\n why:\n - \"startup\" if first sync after browser startup\n - \"schedule\" if it's been too long since the last sync\n - \"score\" if one of sync's trackers has a high score value indicating many changes since the last sync\n - \"user\" if the user manually triggered the sync\n - \"tabs\" if the user opened the synced tabs sidebar, triggering a sync\n failureReason: { // if there was an error\n name: {\"httperror\"|\"networkerror\"|...},\n code: error code for \"httperror\" and \"networkerror\" only,\n error: error string for \"othererror\" and \"unexpectederror\" only,\n from: for \"autherror\" only,\n },\n devices: [{ // excluded if we couldn't get a valid uid or local device id\n os: provided by `Services.appinfo.OS`,\n version: provided by `Services.appinfo.version`,\n id: hashed FxA d", + "mode": "NULLABLE", + "name": "syncs_syncs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How many syncs happened which were not reported in detail\ndue to being over the number of syncs we report detailed information for.\n", + "mode": "NULLABLE", + "name": "syncs_discarded", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "Hashed FxA device ID, hex string of 64 characters.\nNot included if the user is not logged in.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_device_id", + "type": "STRING" + }, + { + "description": "Hashed FxA unique ID, or string of 32 zeroes.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_fxa_uid", + "type": "STRING" + }, + { + "description": "The \"node type\" as reported by the token server.\nThis will not change from sync to sync.\nMay not be present if the token server omits this information.\n", + "mode": "NULLABLE", + "name": "syncs_sync_node_type", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_sync_uuid", + "type": "STRING" + }, + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_v2_sync_uuid", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-beta/sync/sync.2.schema.json b/schemas/org-mozilla-firefox-beta/sync/sync.2.schema.json new file mode 100644 index 000000000..abc0fce74 --- /dev/null +++ b/schemas/org-mozilla-firefox-beta/sync/sync.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_beta", + "bq_metadata_format":"structured", + "bq_table":"sync_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":false, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-vpn/daemonsession/daemonsession.2.bq b/schemas/org-mozilla-firefox-vpn/daemonsession/daemonsession.2.bq new file mode 100644 index 000000000..6ee17d5f7 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/daemonsession/daemonsession.2.bq @@ -0,0 +1,874 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if the VPN server's country is the same as the user's actual country.\nWhen using multihop, the exit server is used.", + "mode": "NULLABLE", + "name": "session_server_in_same_country", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count of times that the connection health check results\nin no signal.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_no_signal_count", + "type": "INT64" + }, + { + "description": "(iOS only) Count of times that the connection health check is in pending.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_pending_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_stable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check results\nin unstable.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_unstable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\nCollected only on mobile apps.\n", + "mode": "NULLABLE", + "name": "session_connection_health_stable_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of data received through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_rx", + "type": "RECORD" + }, + { + "description": "The amount of data sent through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_tx", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "(Mobile-only) The time the user ends a VPN session from the daemon or\nnetwork extension\n", + "mode": "NULLABLE", + "name": "session_daemon_session_end", + "type": "STRING" + }, + { + "description": "(Mobile-only) The time the user starts a VPN session from the daemon or\nnetwork extension\n", + "mode": "NULLABLE", + "name": "session_daemon_session_start", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "(Mobile-only) Where the VPN session started from, to determine how many\nsessions start outside the app. Values should be \"app\" or \"system\".\n\"system\" covers cases like system settings, autostart on boot, tile, etc.\n", + "mode": "NULLABLE", + "name": "session_daemon_session_source", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent in no signal state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_no_signal_time", + "type": "RECORD" + }, + { + "description": "(iOS only) Time spent in pending state.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_pending_time", + "type": "RECORD" + }, + { + "description": "Time spent in stable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_stable_time", + "type": "RECORD" + }, + { + "description": "Time spent in unstable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_unstable_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "(Mobile-only) A unique identifier for each session.\nThis is used to connect unique VPN sessions across pings, and as a safety\ncheck on edge cases of VPN activation/deactivation, such as a session\nbeing started/ended from mobile system settings.\n", + "mode": "NULLABLE", + "name": "session_daemon_session_id", + "type": "STRING" + }, + { + "description": "A unique identifier to connect the app and daemon Glean instances.\n", + "mode": "NULLABLE", + "name": "session_installation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-vpn/daemonsession/daemonsession.2.schema.json b/schemas/org-mozilla-firefox-vpn/daemonsession/daemonsession.2.schema.json new file mode 100644 index 000000000..34b522986 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/daemonsession/daemonsession.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_vpn", + "bq_metadata_format":"structured", + "bq_table":"daemonsession_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-vpn/health/health.2.bq b/schemas/org-mozilla-firefox-vpn/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-vpn/health/health.2.schema.json b/schemas/org-mozilla-firefox-vpn/health/health.2.schema.json new file mode 100644 index 000000000..6b4f7bb42 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_vpn", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-vpn/main/main.2.bq b/schemas/org-mozilla-firefox-vpn/main/main.2.bq new file mode 100644 index 000000000..7d0c2e8a9 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/main/main.2.bq @@ -0,0 +1,654 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The status of whether the VPN is activated on device start\n", + "mode": "NULLABLE", + "name": "settings_connect_on_startup_active", + "type": "BOOL" + }, + { + "description": "True if the client is set to use the system theme, false if not.\n", + "mode": "NULLABLE", + "name": "settings_is_using_system_theme", + "type": "BOOL" + }, + { + "description": "True if the client is displaying dark mode, false if it's displaying\nlight mode. This is recorded whether the mode was manually selected by\nthe user or whether it was used because \"use system theme\" was true.\n", + "mode": "NULLABLE", + "name": "settings_using_dark_mode", + "type": "BOOL" + }, + { + "description": "Status of whether app is being used in language of the operating system\n", + "mode": "NULLABLE", + "name": "settings_using_system_language", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time the app took between starting and rendering the main screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_main_screen", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-vpn/main/main.2.schema.json b/schemas/org-mozilla-firefox-vpn/main/main.2.schema.json new file mode 100644 index 000000000..d07d00b71 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/main/main.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_vpn", + "bq_metadata_format":"structured", + "bq_table":"main_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-vpn/metrics/metrics.2.bq b/schemas/org-mozilla-firefox-vpn/metrics/metrics.2.bq new file mode 100644 index 000000000..3f1e41608 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/metrics/metrics.2.bq @@ -0,0 +1,999 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The status of whether the VPN is activated on device start\n", + "mode": "NULLABLE", + "name": "settings_connect_on_startup_active", + "type": "BOOL" + }, + { + "description": "Status of whether app is being used in language of the operating system\n", + "mode": "NULLABLE", + "name": "settings_using_system_language", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "The time the app took between starting and rendering the main screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_main_screen", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-vpn/metrics/metrics.2.schema.json b/schemas/org-mozilla-firefox-vpn/metrics/metrics.2.schema.json new file mode 100644 index 000000000..39c5e43e4 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_vpn", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox-vpn/vpnsession/vpnsession.2.bq b/schemas/org-mozilla-firefox-vpn/vpnsession/vpnsession.2.bq new file mode 100644 index 000000000..e7012dfe9 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/vpnsession/vpnsession.2.bq @@ -0,0 +1,851 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if the VPN server's country is the same as the user's actual country.\nWhen using multihop, the exit server is used.", + "mode": "NULLABLE", + "name": "session_server_in_same_country", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count of times that the connection health check results\nin no signal.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_no_signal_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_stable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check results\nin unstable.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_unstable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\nCollected only on mobile apps.\n", + "mode": "NULLABLE", + "name": "session_connection_health_stable_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of data received through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_rx", + "type": "RECORD" + }, + { + "description": "The amount of data sent through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_tx", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time the user ends a VPN session from the app\n", + "mode": "NULLABLE", + "name": "session_session_end", + "type": "STRING" + }, + { + "description": "The time the user starts a VPN session from the app\n", + "mode": "NULLABLE", + "name": "session_session_start", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of apps the user is excluding from the VPN tunnel\n", + "mode": "NULLABLE", + "name": "session_apps_excluded", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The type of DNS a user has active:\n- NoCustomDNSAvailable: Custom DNS app feature isn't available\n- Default: App's default DNS server\n- Custom: User has provided a custom valid IP address for their DNS\n- BlockAds: One of app's privacy DNS options\n- BlockTrackers: One of app's privacy DNS options\n- BlockAdsAndTrackers: One of app's privacy DNS options\n- BlockMalware: One of app's privacy DNS options\n- BlockMalwareAndAds: One of app's privacy DNS options\n- BlockMalwareAndTrackers: One of app's privacy DNS options\n- BlockMalwareAndAdsAndTrackers: One of app's privacy DNS options\n", + "mode": "NULLABLE", + "name": "session_dns_type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent in no signal state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_no_signal_time", + "type": "RECORD" + }, + { + "description": "Time spent in stable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_stable_time", + "type": "RECORD" + }, + { + "description": "Time spent in unstable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_unstable_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A unique identifier to connect the app and daemon Glean instances.\n", + "mode": "NULLABLE", + "name": "session_installation_id", + "type": "STRING" + }, + { + "description": "A unique identifier for each session. This is used to connect unique VPN\nsessions across pings, and as a safety check on edge cases of VPN\nactivation/deactivation, such as a session being started/ended from mobile\nsystem settings.\n", + "mode": "NULLABLE", + "name": "session_session_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox-vpn/vpnsession/vpnsession.2.schema.json b/schemas/org-mozilla-firefox-vpn/vpnsession/vpnsession.2.schema.json new file mode 100644 index 000000000..3bd5cc366 --- /dev/null +++ b/schemas/org-mozilla-firefox-vpn/vpnsession/vpnsession.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox_vpn", + "bq_metadata_format":"structured", + "bq_table":"vpnsession_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox/adjust-attribution/adjust-attribution.2.bq b/schemas/org-mozilla-firefox/adjust-attribution/adjust-attribution.2.bq new file mode 100644 index 000000000..b0f5764e3 --- /dev/null +++ b/schemas/org-mozilla-firefox/adjust-attribution/adjust-attribution.2.bq @@ -0,0 +1,647 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the Adjust AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_adgroup", + "type": "STRING" + }, + { + "description": "The name of the Adjust Campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the Adjust Creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_creative", + "type": "STRING" + }, + { + "description": "The name of the Adjust Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "adjust_attribution_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "adjust_attribution_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox/adjust-attribution/adjust-attribution.2.schema.json b/schemas/org-mozilla-firefox/adjust-attribution/adjust-attribution.2.schema.json new file mode 100644 index 000000000..fbf3627ac --- /dev/null +++ b/schemas/org-mozilla-firefox/adjust-attribution/adjust-attribution.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox", + "bq_metadata_format":"structured", + "bq_table":"adjust_attribution_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-firefox/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-firefox/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-firefox/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..b9cd8d52f --- /dev/null +++ b/schemas/org-mozilla-firefox/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox/first-session/first-session.2.bq b/schemas/org-mozilla-firefox/first-session/first-session.2.bq new file mode 100644 index 000000000..5a59cca49 --- /dev/null +++ b/schemas/org-mozilla-firefox/first-session/first-session.2.bq @@ -0,0 +1,856 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The Glean generated date and time of the installation. This is\nunique per app install, though the rest of the data in this\nping is from Adjust and will remain static across installs.\n", + "mode": "NULLABLE", + "name": "first_session_timestamp", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The name of the AdGroup that was used to source this installation.\n", + "mode": "NULLABLE", + "name": "first_session_adgroup", + "type": "STRING" + }, + { + "description": "The name of the campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "first_session_campaign", + "type": "STRING" + }, + { + "description": "The identifier of the creative material that the user interacted with.\n", + "mode": "NULLABLE", + "name": "first_session_creative", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "first_session_distribution_id", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The name of the Network that sourced this installation.\n", + "mode": "NULLABLE", + "name": "first_session_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The mobile application ID in Meta's attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_app", + "type": "STRING" + }, + { + "description": "Nonce used to decrypt the encrypted Meta attribution data.\n", + "mode": "NULLABLE", + "name": "meta_attribution_nonce", + "type": "STRING" + }, + { + "description": "Value tracking user interaction with Meta attribution.\n", + "mode": "NULLABLE", + "name": "meta_attribution_t", + "type": "STRING" + }, + { + "description": "The name of the utm_campaign that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_campaign", + "type": "STRING" + }, + { + "description": "The name of the utm_content that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_content", + "type": "STRING" + }, + { + "description": "The name of the utm_medium that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_medium", + "type": "STRING" + }, + { + "description": "The name of the utm_source that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_source", + "type": "STRING" + }, + { + "description": "The name of the utm_term that is responsible for this installation.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The Meta attribution data in encrypted format.\n", + "mode": "NULLABLE", + "name": "meta_attribution_data", + "type": "STRING" + }, + { + "description": "The full install referrer response.\n", + "mode": "NULLABLE", + "name": "play_store_attribution_install_referrer_response", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox/first-session/first-session.2.schema.json b/schemas/org-mozilla-firefox/first-session/first-session.2.schema.json new file mode 100644 index 000000000..e19c84f87 --- /dev/null +++ b/schemas/org-mozilla-firefox/first-session/first-session.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox", + "bq_metadata_format":"structured", + "bq_table":"first_session_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox/health/health.2.bq b/schemas/org-mozilla-firefox/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-firefox/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox/health/health.2.schema.json b/schemas/org-mozilla-firefox/health/health.2.schema.json new file mode 100644 index 000000000..3c1305d14 --- /dev/null +++ b/schemas/org-mozilla-firefox/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox/metrics/metrics.2.bq b/schemas/org-mozilla-firefox/metrics/metrics.2.bq new file mode 100644 index 000000000..0f82144a2 --- /dev/null +++ b/schemas/org-mozilla-firefox/metrics/metrics.2.bq @@ -0,0 +1,39119 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_enabled_addons", + "type": "BOOL" + }, + { + "description": "Whether or not the user has installed add-ons on the device.\n", + "mode": "NULLABLE", + "name": "addons_has_installed_addons", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Firefox is the Android Autofill provider for this user.\nprovider.\n", + "mode": "NULLABLE", + "name": "android_autofill_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not Android Autofill is supported by the device and is\nsupported for this user.\n", + "mode": "NULLABLE", + "name": "android_autofill_supported", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "True if the user has dynamic toolbar enabled, false if the user has dynamic toolbar disabled.\n", + "mode": "NULLABLE", + "name": "customization_settings_dynamic_toolbar", + "type": "BOOL" + }, + { + "description": "An indication of whether the recently\nsaved section is enabled to be displayed. This was previously customize_home.recently_saved.\n", + "mode": "NULLABLE", + "name": "customize_home_bookmarks", + "type": "BOOL" + }, + { + "description": "An indication of whether Contile is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_contile", + "type": "BOOL" + }, + { + "description": "An indication of whether the Jump back\nin section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_jump_back_in", + "type": "BOOL" + }, + { + "description": "An indication of whether the most visited sites\nare enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_most_visited_sites", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_pocket", + "type": "BOOL" + }, + { + "description": "An indication of whether the Recently\nvisited section is enabled to be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_recently_visited", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket sponsored stories are enabled\nto be displayed\n", + "mode": "NULLABLE", + "name": "customize_home_sponsored_pocket", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the Debug Drawer feature.\n", + "mode": "NULLABLE", + "name": "debug_drawer_debug_drawer_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "True if marketing notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "events_marketing_notification_allowed", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Is Fenix the default browser?\n", + "mode": "NULLABLE", + "name": "metrics_default_browser", + "type": "BOOL" + }, + { + "description": "Is the default wallpapper set to be shown?\n", + "mode": "NULLABLE", + "name": "metrics_default_wallpaper", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the desktop folder\n", + "mode": "NULLABLE", + "name": "metrics_has_desktop_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks in the mobile folder\n", + "mode": "NULLABLE", + "name": "metrics_has_mobile_bookmarks", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has any open NORMAL tabs.\n", + "mode": "NULLABLE", + "name": "metrics_has_open_tabs", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has recently used PWAs.\nSee recently_used_pwa_count for the actual count.\n", + "mode": "NULLABLE", + "name": "metrics_has_recent_pwas", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has top sites\n", + "mode": "NULLABLE", + "name": "metrics_has_top_sites", + "type": "BOOL" + }, + { + "description": "True if the device is a large screen device.", + "mode": "NULLABLE", + "name": "metrics_is_large_device", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "metrics_notifications_allowed", + "type": "BOOL" + }, + { + "description": "True if the device's asserted 'advertised' RAM is more than the given threshold.", + "mode": "NULLABLE", + "name": "metrics_ram_more_than_threshold", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "Whether gesture navigation is used instead of the traditional navigation bar.\n", + "mode": "NULLABLE", + "name": "navigation_bar_os_navigation_uses_gestures", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "True when app Zygote preloading with isolated processes is enabled.", + "mode": "NULLABLE", + "name": "preferences_app_zygote_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled bookmark search suggestions\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_bookmarks_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled browsing history suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_browsing_history_suggestion", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled clipboard search suggestions.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_clipboard_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Measures user retention of the Global Privacy Control (GPC) setting at start-up.", + "mode": "NULLABLE", + "name": "preferences_global_privacy_control_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has the inactive tabs feature enabled.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_inactive_tabs_enabled", + "type": "BOOL" + }, + { + "description": "True when isolated content processes are enabled on the runtime.", + "mode": "NULLABLE", + "name": "preferences_isolated_content_processes_enabled", + "type": "BOOL" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Whether or not the user has remote debugging enabled\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_remote_debugging_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled search shortcuts.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_shortcuts_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_search_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has non sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_non_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has sponsor search suggestions enabled\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_show_sponsor_suggestions_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user is signed into FxA\ndefault: false\n", + "mode": "NULLABLE", + "name": "preferences_signed_in_sync", + "type": "BOOL" + }, + { + "description": "A metric indicating whether or not the user has studies enabled default: true\n", + "mode": "NULLABLE", + "name": "preferences_studies_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has telemetry enabled. Note we should\nnever receive a \"false\" value for this since telemetry would\nnot send in that case.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_telemetry_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not the user has enabled the voice search button.\ndefault: true\n", + "mode": "NULLABLE", + "name": "preferences_voice_search_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not pull-to-refresh functionality\nis enabled from Settings screen.\ndefault: true\n", + "mode": "NULLABLE", + "name": "pull_to_refresh_in_browser_enabled", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "An indication of whether the recent tabs /\nJump Back In section is visible on the homepage.\n", + "mode": "NULLABLE", + "name": "recent_tabs_section_visible", + "type": "BOOL" + }, + { + "description": "Whether or not the user opted out of review quality check feature.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has disabled ads.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Whether or not Nimbus has disabled the use of the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Whether or the user has completed the review quality check onboarding.\n", + "mode": "NULLABLE", + "name": "shopping_settings_user_has_onboarded", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "Whether or not Tab Strip is enabled by the user.\n", + "mode": "NULLABLE", + "name": "tab_strip_enabled", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button continue with add-ons\ndisabled on the dialog for when the extensions\nprocess crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_disable", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on the button try to restart add-ons\non the dialog for when the extensions process crashed.\n", + "mode": "NULLABLE", + "name": "addons_extensions_process_ui_retry", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "addresses_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_saved", + "type": "INT64" + }, + { + "description": "A counter of the number of addresses that have been updated\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "addresses_updated", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "app_menu_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been deleted by\nthe user.\n", + "mode": "NULLABLE", + "name": "credit_cards_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been saved\nmanually by the user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "A counter of URIs visited by the user in the current session, including\npage reloads. This includes private browsing. This does not include\nbackground page requests and URIs from embedded pages but may be\nincremented without user interaction by website scripts that\nprogrammatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "events_normal_and_private_uri_count", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "The total number of operations performed by the FxA client.", + "mode": "NULLABLE", + "name": "fxa_client_operation_count", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked on a bookmark from the home\nscreen. This was previously recent_bookmarks.bookmark_clicked.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmark_clicked", + "type": "INT64" + }, + { + "description": "A counter that indicates the number of times that a user\nhas clicked the show all button for bookmarks\non the home screen. This was previously recent_bookmarks.show_all_bookmarks.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_show_all_bookmarks", + "type": "INT64" + }, + { + "description": "The number of times the home screen was displayed to the user.\n", + "mode": "NULLABLE", + "name": "home_screen_home_screen_view_count", + "type": "INT64" + }, + { + "description": "The number of times the standard browsing mode home screen was\ndisplayed to the user. (for tile counts)\n", + "mode": "NULLABLE", + "name": "home_screen_standard_homepage_view_count", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been deleted by user.\n", + "mode": "NULLABLE", + "name": "logins_deleted", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been modified by user.\n", + "mode": "NULLABLE", + "name": "logins_modified", + "type": "INT64" + }, + { + "description": "Counter of number of passwords that have been saved by user (including deleted).\n", + "mode": "NULLABLE", + "name": "logins_saved", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted locally due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_local_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted in the mirror table due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_mirror_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_write_query_count", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the desktop\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in a\nnull value. To disambiguate between a failed `desktop_bookmarks_count`\nping and 0 bookmarks, please see `has_desktop_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_desktop_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many bookmarks a user has in the mobile\nfolder. This value will only be set if the user has at least *one*\nbookmark. If they have 0, this ping will not get sent, resulting in\na null value. To disambiguate between a failed `mobile_bookmarks_count`\nping and 0 bookmarks, please see `has_mobile_bookmarks`.\n", + "mode": "NULLABLE", + "name": "metrics_mobile_bookmarks_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PRIVATE tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `private_tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`\n", + "mode": "NULLABLE", + "name": "metrics_private_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many PWAs a user has recently used.\nThreshold for \"recency\" set in HomeActivity#PWA_RECENTLY_USED_THRESHOLD.\nCurrently we are not told by the OS when a PWA is removed by the user,\nso we use the \"recently used\" heuristic to judge how many PWAs are still\nactive, as a proxy for \"installed\". This value will only be set if the\nuser has at least *one* recently used PWA. If they have 0, this metric\nwill not be sent, resulting in a null value during analysis on the\nserver-side. To disambiguate between a failed `recently_used_pwa_count`\nmetric and 0 recent PWAs, please see `has_recent_pwas`.\n", + "mode": "NULLABLE", + "name": "metrics_recently_used_pwa_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many NORMAL tabs a user has open. This\nvalue will only be set if the user has at least *one* open tab. If they\nhave 0, this ping will not get sent, resulting in a null value. To\ndisambiguate between a failed `tabs_open_count` ping and 0 open tabs,\nplease see `has_open_tabs`.\n", + "mode": "NULLABLE", + "name": "metrics_tabs_open_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many top sites a user has. This value will\nonly be set if the user has at least *one* top site. If they have 0,\nthis ping will not get sent, resulting in a null value. To disambiguate\nbetween a failed `top_sites_count` ping and 0 top sites, please see\n`has_top_sites`.\n", + "mode": "NULLABLE", + "name": "metrics_top_sites_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store.\n", + "mode": "NULLABLE", + "name": "places_manager_write_query_count", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "Counts how often the loading placeholder is shown and the resulting tab\nis the same as it was before the load.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_latest_synced_tab_is_stale", + "type": "INT64" + }, + { + "description": "Counts how many times \"show all synced tabs\" button has been clicked.\n", + "mode": "NULLABLE", + "name": "recent_synced_tabs_show_all_synced_tabs_clicked", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has clicked \"sign into sync\" from the settings page.\n", + "mode": "NULLABLE", + "name": "settings_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts number of visits to a supported retailer product page\nwhile enrolled in either the control or treatment branches\nof the shopping experiment.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has closed.\n", + "mode": "NULLABLE", + "name": "tabs_tray_close_inactive_tab", + "type": "INT64" + }, + { + "description": "A counter that indicates how many INACTIVE tabs a user has opened.\n", + "mode": "NULLABLE", + "name": "tabs_tray_open_inactive_tab", + "type": "INT64" + }, + { + "description": "Records the number of times the user dismissed the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_dismiss_count", + "type": "INT64" + }, + { + "description": "Records the number of Terms of Use prompt impressions the user has had.", + "mode": "NULLABLE", + "name": "terms_of_use_impression_count", + "type": "INT64" + }, + { + "description": "Records the number of times the user clicked 'remind me later' on the Terms of Use prompt.", + "mode": "NULLABLE", + "name": "terms_of_use_remind_me_later_count", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + }, + { + "description": "The timestamp when the user was shown the privacy notice banner.", + "mode": "NULLABLE", + "name": "privacy_notice_banner_displayed_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.", + "mode": "NULLABLE", + "name": "terms_of_use_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during FxA operations, labeled by type. It is intended to be used together with `operation_count` to measure the overall error rate of FxA operations operations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fxa_client_error_count", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_write_query_error_count", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has added.\n\nThe label for this counter is ``.\n\n`source` will be: `page_action_menu` as that is the only\nentry point right now to add bookmarks.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_add", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has deleted.\n\nThe label for this counter is ``.\n\n`source` will be: `add_bookmark_toast` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_delete", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has edited.\n\nThe label for this counter is ``.\n\n`source` will be: `bookmark_edit_page` or `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_edit", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many bookmarks a user has opened.\n\nThe label for this counter is ``.\n\n`source` will be: `top_sites`, `awesomebar_results`, `bookmark_panel`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_bookmarks_open", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Fenix `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`, `widget`, `shortcut`, `topsite`\n(depending on the source from which the search started). Also added the\n`other` option for the source but it should never enter on this case.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "metrics_search_count", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- Home screen shortcuts: `*_view`\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\npr", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "places_manager_write_query_error_count", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Counts the number of times a recent synced tab is opened, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_opened", + "type": "RECORD" + }, + { + "description": "Counts impressions of a recent synced tab on the homepage, labeled by the\ndevice type the tab originates from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "recent_synced_tabs_recent_synced_tab_shown", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The area that the tabs tray was accessed from.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_tray_access_point", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "How many and which type of wallpapers were applied.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "wallpapers_new_wallpaper_applied", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "Size of the db after executing `run_maintenance()`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_db_size_after_maintenance", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "The size of the app's APK and related files as installed: this is expected\nto be larger than download size. This is the output of\n[StorageStats.getAppBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytes())\nso see that for details. This value is only available on Android 8+. A\nsimilar value may be available on the Google Play dashboard: we can use\nthis value to see if that value is reliable enough.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_app_bytes", + "type": "RECORD" + }, + { + "description": "The size of all cached data in the app. This is the output of\n[StorageStats.getCacheBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getCacheBytes())\nso see that for details. This value is only available on Android 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_cache_bytes", + "type": "RECORD" + }, + { + "description": "The size of all data minus `cache_bytes`. This is the output of\n[StorageStats.getDataBytes](https://developer.android.com/reference/android/app/usage/StorageStats#getDataBytes())\nexcept we subtract the value of `cache_bytes` so the cache is not measured\nredundantly; see that method for details. This value is only available on\nAndroid 8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_data_dir_bytes", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The Nimbus context object that is recorded to Glean\n", + "mode": "NULLABLE", + "name": "nimbus_system_recorded_nimbus_context", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "A counter of the number of all addresses that are currently saved by user.\n", + "mode": "NULLABLE", + "name": "addresses_saved_all", + "type": "INT64" + }, + { + "description": "Image-decode Error from AOM decoder\n", + "mode": "NULLABLE", + "name": "avif_aom_decode_error", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "Counter of number of credit cards that are currently stored by user.\n", + "mode": "NULLABLE", + "name": "credit_cards_saved_all", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of bookmarked items appearing in the\nBookmarks section on the home page. This was previously recent_bookmarks.recent_bookmarks_count.\n", + "mode": "NULLABLE", + "name": "home_bookmarks_bookmarks_count", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "Counter of number of passwords currently saved by user.\n", + "mode": "NULLABLE", + "name": "logins_saved_all", + "type": "INT64" + }, + { + "description": "The total amount of memory this device in bytes, when available will be MemoryInfo.advertisedMem otherwise it will be MemoryInfo.totalMem. This doesn't represent memory available to the application however.\n", + "mode": "NULLABLE", + "name": "metrics_device_total_ram", + "type": "INT64" + }, + { + "description": "How many inactive tabs does the user have, checked when the user opens\nthe tabs tray.\nValue will be 0 if the feature is disabled.\n", + "mode": "NULLABLE", + "name": "metrics_inactive_tabs_count", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.", + "mode": "NULLABLE", + "name": "terms_of_use_version", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "What opening screen preference the user has selected\nunder \"Customize Home\".\n\"homepage,\" \"last tab,\" or \"homepage after 4 hours\"\ndefault: \"homepage after 4 hours\"\n", + "mode": "NULLABLE", + "name": "customize_home_opening_screen", + "type": "STRING" + }, + { + "description": "A user chose a filter for the downloads page.\nThe filter can be All, Image, Video, Document or Other.\n", + "mode": "NULLABLE", + "name": "downloads_filtered", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.\n", + "mode": "NULLABLE", + "name": "first_session_install_source", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310\n", + "mode": "NULLABLE", + "name": "geckoview_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1\n", + "mode": "NULLABLE", + "name": "geckoview_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string containing the Adjust ad group ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_ad_group", + "type": "STRING" + }, + { + "description": "A string containing the Adjust campaign ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_campaign", + "type": "STRING" + }, + { + "description": "A string containing the Adjust creative ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_creative", + "type": "STRING" + }, + { + "description": "A string containing the Adjust network ID from which the user installed\nFenix. This will not send on the first session the user runs. If the\ninstall is organic, this will be empty.\n", + "mode": "NULLABLE", + "name": "metrics_adjust_network", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab closing:\nMANUAL, ONE_DAY, ONE_WEEK, ONE_MONTH\n", + "mode": "NULLABLE", + "name": "metrics_close_tab_setting", + "type": "STRING" + }, + { + "description": "The name of the default browser on device if and only if it's a Mozilla\nowned product\n", + "mode": "NULLABLE", + "name": "metrics_default_moz_browser", + "type": "STRING" + }, + { + "description": "A string containing the distribution identifier. This was used\nto identify installs from Mozilla Online, but now also identifies\npartnership deal distributions\n", + "mode": "NULLABLE", + "name": "metrics_distribution_id", + "type": "STRING" + }, + { + "description": "A string that indicates the setting for tab view:\nGRID, LIST\n", + "mode": "NULLABLE", + "name": "metrics_tab_view_setting", + "type": "STRING" + }, + { + "description": "Measures user retention of the DNS over HTTPS (DoH) setting at start-up.\nExample values include: \"Default\", \"Increased\", \"Max\", \"Off\".\n", + "mode": "NULLABLE", + "name": "preferences_doh_protection_level", + "type": "STRING" + }, + { + "description": "What type of enhanced tracking protection the user has enabled.\n\"standard,\" \"strict,\" \"custom,\" or \"\" (if disabled)\ndefault: \"standard\"\n", + "mode": "NULLABLE", + "name": "preferences_enhanced_tracking_protection", + "type": "STRING" + }, + { + "description": "The option user has selected in the \"Custom\" mode of the\nEnhanced Tracking Protection settings.\nPossible values:\n- total-protection for “Isolate cross-site cookies”\n- social for “Cross-site and social media trackers”\n- unvisited for “Cookies from unvisited sites”\n- third-party for “All third-party cookies..”\n- all for “All cookies..”\n", + "mode": "NULLABLE", + "name": "preferences_etp_custom_cookies_selection", + "type": "STRING" + }, + { + "description": "Measures user retention of the HTTPS-Only setting at start-up.\nExample values include: \"DISABLED\", \"ENABLED_PRIVATE_ONLY\", \"ENABLED\".\n", + "mode": "NULLABLE", + "name": "preferences_https_only_mode", + "type": "STRING" + }, + { + "description": "The user has the open links in apps feature enabled.\n\"ask_before_opening\", \"always\" or \"never\".\ndefault: \"never\"\n", + "mode": "NULLABLE", + "name": "preferences_open_links_in_app_enabled", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in expanded toolbar.\nPossible values are: bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_expanded_shortcut", + "type": "STRING" + }, + { + "description": "The mode of the toolbar. Possible values are: simple or expanded.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_mode_setting", + "type": "STRING" + }, + { + "description": "The position of the toolbar\ndefault: bottom (defaults to top if the user has accessibility services)\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_position_setting", + "type": "STRING" + }, + { + "description": "The toolbar shortcut used in simple toolbar.\nPossible values are: new_tab, share, bookmark, translate, homepage or back.\n", + "mode": "NULLABLE", + "name": "preferences_toolbar_simple_shortcut", + "type": "STRING" + }, + { + "description": "The theme the user has enabled. \"light,\" \"dark,\" \"system,\" or \"battery\"\ndefault: \"system\" for API 28+, else \"light\"\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine identifier. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_code", + "type": "STRING" + }, + { + "description": "If the search engine is pre-loaded with Fenix this value\nwill be the search engine name. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the\nvalue will be \"custom\"\n", + "mode": "NULLABLE", + "name": "search_default_engine_name", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "Record whether the user chooses an option from the dropdown.\n", + "mode": "NULLABLE", + "name": "webcompatreporting_reason_dropdown", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "addons_enabled_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "addons_installed_addons", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "metrics_mozilla_products", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_accessibility_services", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "preferences_sync_items", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_timespan", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in a browser tab (normal or private).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_browser_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in custom tab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_custom_tab_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time that it takes to initialize navigation bar in home screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "navigation_bar_home_initialize_timespan", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Adjust SDK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "first_session_adjust_attribution_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "The time taken to build a webrender frame. This involves calculating the visibility of primitives, requesting resources, and building the render passes which will be used to render the frame.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time taken to build a webrender scene. This occurs each time webrender receives a new display list. This additionally includes blob rasterization time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_scenebuild_time", + "type": "RECORD" + }, + { + "description": "The time taken to do a webrender scene swap. This is book-keeping that APZ must perform once webrender has built a new scene.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_webrender_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The time that it takes to load the Search content.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics_search_page_load_time", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "Duration of a bookmarks awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_bookmark_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a clipboard awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_clipboard_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a history awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_history_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a search engine awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_search_engine_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a session awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_session_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a shortcuts awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_shortcuts_suggestions", + "type": "RECORD" + }, + { + "description": "Duration of a synced tabs awesomebar suggestion query.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_awesomebar_synced_tabs_suggestions", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "The duration of `FenixApplication.onCreate` in the main process. This does\nnot measure the duration of migration code (via\n`MigratingFenixApplication` included in the Beta and Release channels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_application_on_create", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD MAIN start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nNotably, this duration omits the time from process start to the\ninitializer (which includes a lengthy dex operation) and the time from\nthe first frame to visual completeness. This probe doesn't measure Custom\nTabs or other uses of `ExternalAppBrowserActivity` to simplify result\nanalysis. The methodology for determining this measurement is imperfect\nto simplify implementation. Issues may include:\n
- Not measuring Beta and Release channels (due to\n`MigrationDecisionActivity` interrupting the logic).\n
- Not distinguishing between MAIN to homescreen, onboarding, session\nrestore, others?\n
- Not choosing to record a MAIN based on what the user would see and\nthus the core code path (i.e. the thing we want to measure) but rather on\nthe initial `Intent` state.\n

\nThe hope is that these cases will not have a significant impac", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_main_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary)\nwhere we can't say it was a MAIN or VIEW start up. The methodology for\ndetermining this measurement is imperfect to simplify implementation.\n

\nSee the `cold_main_app_to_first_frame` probe docs for known issues and\nmore details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_unknwn_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "The duration from `*Application`'s initializer to the first Android frame\nbeing drawn in a [COLD VIEW start\nup](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\nThe methodology for determining this measurement is imperfect to simplify\nimplementation. Issues may include:\n
-Including VIEW intents that aren't valid so take code paths similar\nto MAIN (this is speculative)\n

\nSee the `cold_main_app_to_first_frame` probe docs for other possible\nknown issues and more details.\n

\nAround April 8, 2021 the implementation was refactored. Functionally, it\nshould be the same but it's noted just in case there are bugs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_startup_cold_view_app_to_first_frame", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "Time between tab selection and first composite of the tab content onto the screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_tab_switch_composite", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domContentLoaded for the foreground http or https root content document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_dcl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to domContentLoaded for the foreground http or https root content document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_dcl_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds calling all request animation frame callbacks for a document before it has reached readystate complete.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_req_anim_frame_callback", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds calling all request animation frame callbacks for a document after it has reached readystate complete.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_responsiveness_req_anim_frame_callback", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA_CHECKPOINT` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_chk_pnt_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `PRAGMA optimize` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_optimize_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `prune_older_visits()` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_prune_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_time", + "type": "RECORD" + }, + { + "description": "Time taken to execute `VACUUM` inside `run_maintenance()`", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_manager_run_maintenance_vacuum_time", + "type": "RECORD" + }, + { + "description": "The time that it takes to derive the attribution parameters by the Google Play Install Referrer library.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "play_store_attribution_attribution_time", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Measures the amount of time between the beginning of a sync and the end.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "recent_synced_tabs_recent_synced_tab_time_to_load", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "How long it took to query the device for the StorageStats that contain the\nfile size information. The docs say it may be expensive so we want to\nensure it's not too expensive. This value is only available on Android\n8+.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "storage_stats_query_stats_duration", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "If the search engine is pre-loaded with Fenix this value will be the base\nURL we use to build the search query for the search engine. For example:\nhttps://mysearchengine.com/?query=%s. If it's a custom search engine\n(defined: https://github.com/mozilla-mobile/fenix/issues/1607) the value\nwill not be set.\n", + "mode": "NULLABLE", + "name": "search_default_engine_search_url", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "url2", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox/metrics/metrics.2.schema.json b/schemas/org-mozilla-firefox/metrics/metrics.2.schema.json new file mode 100644 index 000000000..eb48ab500 --- /dev/null +++ b/schemas/org-mozilla-firefox/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefox/sync/sync.2.bq b/schemas/org-mozilla-firefox/sync/sync.2.bq new file mode 100644 index 000000000..08fd1ea65 --- /dev/null +++ b/schemas/org-mozilla-firefox/sync/sync.2.bq @@ -0,0 +1,954 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "When the sync telemetry session begins (the `SyncTelemetryImpl`\nconstructor runs).\nTypically useful for ordering \"sync\" pings.\n", + "mode": "NULLABLE", + "name": "syncs_session_start_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_failure_reason", + "type": "RECORD" + }, + { + "description": "Records a global sync failure: either due to an authentication error, unexpected exception, or other error that caused the sync to fail. Error strings are truncated and sanitized to omit PII, like URLs and file system paths.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "sync_v2_failure_reason", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The application-services developers are in the process of oxidizing parts\nof firefox sync and the related data storage code,\nwhich typically requires migrating the old storage into a new database and/or format.\n\nWhen a migration like this occurs,\na record is reported in this list the next time the sync ping is submitted.\n\n```text\n [{\n migration_type: Presently this is only ever \"webext-storage\",\n entries: The number of entries/preferences in the source (legacy) database, including ones we failed to read,\n entriesSuccessful: he number of entries/preferences (see below) which we have successfully migrated into the destination database,\n extensions: The number of distinct extensions which have at least one preference in the source (legacy) database,\n extensionsSuccessful: The number of distinct extensions which have at least one preference in the destination (migrated) database,\n openFailure: A boolean flag that is true if we hit a read error prior to . This likely indicates complete corruptio", + "mode": "NULLABLE", + "name": "syncs_migrations", + "type": "JSON" + }, + { + "description": "Recorded syncs.\nThe \"sync\" ping is not submitted if this is empty.\n```text\n [{\n when: integer ms since epoch,\n took: integer ms duration,\n didLogin: true if first sync after login,\n why:\n - \"startup\" if first sync after browser startup\n - \"schedule\" if it's been too long since the last sync\n - \"score\" if one of sync's trackers has a high score value indicating many changes since the last sync\n - \"user\" if the user manually triggered the sync\n - \"tabs\" if the user opened the synced tabs sidebar, triggering a sync\n failureReason: { // if there was an error\n name: {\"httperror\"|\"networkerror\"|...},\n code: error code for \"httperror\" and \"networkerror\" only,\n error: error string for \"othererror\" and \"unexpectederror\" only,\n from: for \"autherror\" only,\n },\n devices: [{ // excluded if we couldn't get a valid uid or local device id\n os: provided by `Services.appinfo.OS`,\n version: provided by `Services.appinfo.version`,\n id: hashed FxA d", + "mode": "NULLABLE", + "name": "syncs_syncs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How many syncs happened which were not reported in detail\ndue to being over the number of syncs we report detailed information for.\n", + "mode": "NULLABLE", + "name": "syncs_discarded", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "Hashed FxA device ID, hex string of 64 characters.\nNot included if the user is not logged in.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_device_id", + "type": "STRING" + }, + { + "description": "Hashed FxA unique ID, or string of 32 zeroes.\nIf this changes between syncs, the \"sync\" ping is submitted with reason \"idchange\".\n", + "mode": "NULLABLE", + "name": "syncs_hashed_fxa_uid", + "type": "STRING" + }, + { + "description": "The \"node type\" as reported by the token server.\nThis will not change from sync to sync.\nMay not be present if the token server omits this information.\n", + "mode": "NULLABLE", + "name": "syncs_sync_node_type", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_sync_uuid", + "type": "STRING" + }, + { + "description": "Unique identifier for this sync, used to correlate together individual pings for data types that were synchronized together (history, bookmarks, logins). If a data type is synchronized by itself via the legacy 'sync' API (as opposed to the Sync Manager), then this field will not be set on the corresponding ping.\n", + "mode": "NULLABLE", + "name": "sync_v2_sync_uuid", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefox/sync/sync.2.schema.json b/schemas/org-mozilla-firefox/sync/sync.2.schema.json new file mode 100644 index 000000000..ba89b2fa3 --- /dev/null +++ b/schemas/org-mozilla-firefox/sync/sync.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefox", + "bq_metadata_format":"structured", + "bq_table":"sync_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":false, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefoxreality/health/health.2.bq b/schemas/org-mozilla-firefoxreality/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-firefoxreality/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefoxreality/health/health.2.schema.json b/schemas/org-mozilla-firefoxreality/health/health.2.schema.json new file mode 100644 index 000000000..045f770f7 --- /dev/null +++ b/schemas/org-mozilla-firefoxreality/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefoxreality", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-firefoxreality/metrics/metrics.2.bq b/schemas/org-mozilla-firefoxreality/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/org-mozilla-firefoxreality/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-firefoxreality/metrics/metrics.2.schema.json b/schemas/org-mozilla-firefoxreality/metrics/metrics.2.schema.json new file mode 100644 index 000000000..040bc237a --- /dev/null +++ b/schemas/org-mozilla-firefoxreality/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_firefoxreality", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus-beta/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-focus-beta/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-focus-beta/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus-beta/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-focus-beta/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..862366fb9 --- /dev/null +++ b/schemas/org-mozilla-focus-beta/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus_beta", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus-beta/health/health.2.bq b/schemas/org-mozilla-focus-beta/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-focus-beta/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus-beta/health/health.2.schema.json b/schemas/org-mozilla-focus-beta/health/health.2.schema.json new file mode 100644 index 000000000..33ebfe921 --- /dev/null +++ b/schemas/org-mozilla-focus-beta/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus_beta", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus-beta/metrics/metrics.2.bq b/schemas/org-mozilla-focus-beta/metrics/metrics.2.bq new file mode 100644 index 000000000..a4096f716 --- /dev/null +++ b/schemas/org-mozilla-focus-beta/metrics/metrics.2.bq @@ -0,0 +1,37234 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "Is Focus the default browser? This is true only if the user\nchanges the default browser through the app settings.\n", + "mode": "NULLABLE", + "name": "browser_is_default", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "If Fenix is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "mozilla_products_has_fenix_installed", + "type": "BOOL" + }, + { + "description": "Fenix is the default browser on user's device\n", + "mode": "NULLABLE", + "name": "mozilla_products_is_fenix_default_browser", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed from OS settings, otherwise false.\nPrior to Android 13, notifications were allowed by default;\nstarting with Android 13,the user must explicitly grant the permission.\n", + "mode": "NULLABLE", + "name": "notifications_permission_granted", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_advertising_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_analytics_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_content_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_ever_changed_etp", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_social_blocked", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates how many times a user has added\na website to the autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_domain_added", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from the autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_domain_removed", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has reordered\nthe autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_list_order_changed", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has tapped\nthe report site issue from browser menu\n", + "mode": "NULLABLE", + "name": "browser_report_site_issue_counter", + "type": "INT64" + }, + { + "description": "Records count of URIs visited by the user in the current session,\nincluding page reloads.\nIt does not include background page requests and URIs from embedded pages\nbut may be incremented without user interaction by website scripts\nthat programmatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "browser_total_uri_count", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has added\na website to shortcuts.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_added_counter", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\na website from a shortcut in the home screen.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_opened_counter", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\nthe tracking protection settings panel from the toolbar.\n", + "mode": "NULLABLE", + "name": "tracking_protection_toolbar_shield_clicked", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "Number of opened tabs when the app has been send to background.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tab_count_app_backgrounded", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Focus `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_search_count", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\nprimary buckets:\n
- Close and reopen ", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from shortcuts.\nIt also indicates the screen it was removed from, home or browser.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "shortcuts_shortcut_removed_counter", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "The number of shortcuts the user has on home screen,\n0, 1, 2, 3 or 4 (maximum)\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcuts_on_home_number", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "A string containing the default search engine name.\n", + "mode": "NULLABLE", + "name": "browser_default_search_engine", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.", + "mode": "NULLABLE", + "name": "browser_install_source", + "type": "STRING" + }, + { + "description": "The locale that differs from the system locale if a user\nspecifically overrides it for the app.\n", + "mode": "NULLABLE", + "name": "browser_locale_override", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string that indicates the theme. Can be one of LIGHT, DARK, or FOLLOW DEVICE. Default is FOLLOW DEVICE.\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Sets the legacy client ID as part of the deletion-request ping.\n**No longer reported set since Focus 124, where legacy telemetry was removed**.\n", + "mode": "NULLABLE", + "name": "legacy_ids_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus-beta/metrics/metrics.2.schema.json b/schemas/org-mozilla-focus-beta/metrics/metrics.2.schema.json new file mode 100644 index 000000000..43f2975d1 --- /dev/null +++ b/schemas/org-mozilla-focus-beta/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus_beta", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus-nightly/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-focus-nightly/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-focus-nightly/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus-nightly/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-focus-nightly/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..4d24f78c7 --- /dev/null +++ b/schemas/org-mozilla-focus-nightly/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus_nightly", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus-nightly/health/health.2.bq b/schemas/org-mozilla-focus-nightly/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-focus-nightly/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus-nightly/health/health.2.schema.json b/schemas/org-mozilla-focus-nightly/health/health.2.schema.json new file mode 100644 index 000000000..efbe4fafb --- /dev/null +++ b/schemas/org-mozilla-focus-nightly/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus_nightly", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus-nightly/metrics/metrics.2.bq b/schemas/org-mozilla-focus-nightly/metrics/metrics.2.bq new file mode 100644 index 000000000..a4096f716 --- /dev/null +++ b/schemas/org-mozilla-focus-nightly/metrics/metrics.2.bq @@ -0,0 +1,37234 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "Is Focus the default browser? This is true only if the user\nchanges the default browser through the app settings.\n", + "mode": "NULLABLE", + "name": "browser_is_default", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "If Fenix is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "mozilla_products_has_fenix_installed", + "type": "BOOL" + }, + { + "description": "Fenix is the default browser on user's device\n", + "mode": "NULLABLE", + "name": "mozilla_products_is_fenix_default_browser", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed from OS settings, otherwise false.\nPrior to Android 13, notifications were allowed by default;\nstarting with Android 13,the user must explicitly grant the permission.\n", + "mode": "NULLABLE", + "name": "notifications_permission_granted", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_advertising_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_analytics_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_content_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_ever_changed_etp", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_social_blocked", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates how many times a user has added\na website to the autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_domain_added", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from the autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_domain_removed", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has reordered\nthe autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_list_order_changed", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has tapped\nthe report site issue from browser menu\n", + "mode": "NULLABLE", + "name": "browser_report_site_issue_counter", + "type": "INT64" + }, + { + "description": "Records count of URIs visited by the user in the current session,\nincluding page reloads.\nIt does not include background page requests and URIs from embedded pages\nbut may be incremented without user interaction by website scripts\nthat programmatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "browser_total_uri_count", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has added\na website to shortcuts.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_added_counter", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\na website from a shortcut in the home screen.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_opened_counter", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\nthe tracking protection settings panel from the toolbar.\n", + "mode": "NULLABLE", + "name": "tracking_protection_toolbar_shield_clicked", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "Number of opened tabs when the app has been send to background.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tab_count_app_backgrounded", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Focus `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_search_count", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\nprimary buckets:\n
- Close and reopen ", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from shortcuts.\nIt also indicates the screen it was removed from, home or browser.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "shortcuts_shortcut_removed_counter", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "The number of shortcuts the user has on home screen,\n0, 1, 2, 3 or 4 (maximum)\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcuts_on_home_number", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "A string containing the default search engine name.\n", + "mode": "NULLABLE", + "name": "browser_default_search_engine", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.", + "mode": "NULLABLE", + "name": "browser_install_source", + "type": "STRING" + }, + { + "description": "The locale that differs from the system locale if a user\nspecifically overrides it for the app.\n", + "mode": "NULLABLE", + "name": "browser_locale_override", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string that indicates the theme. Can be one of LIGHT, DARK, or FOLLOW DEVICE. Default is FOLLOW DEVICE.\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Sets the legacy client ID as part of the deletion-request ping.\n**No longer reported set since Focus 124, where legacy telemetry was removed**.\n", + "mode": "NULLABLE", + "name": "legacy_ids_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus-nightly/metrics/metrics.2.schema.json b/schemas/org-mozilla-focus-nightly/metrics/metrics.2.schema.json new file mode 100644 index 000000000..880e5db32 --- /dev/null +++ b/schemas/org-mozilla-focus-nightly/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus_nightly", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-focus/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-focus/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-focus/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..82ee5f195 --- /dev/null +++ b/schemas/org-mozilla-focus/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus/health/health.2.bq b/schemas/org-mozilla-focus/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-focus/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus/health/health.2.schema.json b/schemas/org-mozilla-focus/health/health.2.schema.json new file mode 100644 index 000000000..9a1a18865 --- /dev/null +++ b/schemas/org-mozilla-focus/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-focus/metrics/metrics.2.bq b/schemas/org-mozilla-focus/metrics/metrics.2.bq new file mode 100644 index 000000000..a4096f716 --- /dev/null +++ b/schemas/org-mozilla-focus/metrics/metrics.2.bq @@ -0,0 +1,37234 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "Is Focus the default browser? This is true only if the user\nchanges the default browser through the app settings.\n", + "mode": "NULLABLE", + "name": "browser_is_default", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "If Fenix is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "mozilla_products_has_fenix_installed", + "type": "BOOL" + }, + { + "description": "Fenix is the default browser on user's device\n", + "mode": "NULLABLE", + "name": "mozilla_products_is_fenix_default_browser", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed from OS settings, otherwise false.\nPrior to Android 13, notifications were allowed by default;\nstarting with Android 13,the user must explicitly grant the permission.\n", + "mode": "NULLABLE", + "name": "notifications_permission_granted", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_advertising_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_analytics_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_content_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_ever_changed_etp", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_social_blocked", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates how many times a user has added\na website to the autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_domain_added", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from the autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_domain_removed", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has reordered\nthe autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_list_order_changed", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has tapped\nthe report site issue from browser menu\n", + "mode": "NULLABLE", + "name": "browser_report_site_issue_counter", + "type": "INT64" + }, + { + "description": "Records count of URIs visited by the user in the current session,\nincluding page reloads.\nIt does not include background page requests and URIs from embedded pages\nbut may be incremented without user interaction by website scripts\nthat programmatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "browser_total_uri_count", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has added\na website to shortcuts.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_added_counter", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\na website from a shortcut in the home screen.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_opened_counter", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\nthe tracking protection settings panel from the toolbar.\n", + "mode": "NULLABLE", + "name": "tracking_protection_toolbar_shield_clicked", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "Number of opened tabs when the app has been send to background.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tab_count_app_backgrounded", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Focus `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_search_count", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\nprimary buckets:\n
- Close and reopen ", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from shortcuts.\nIt also indicates the screen it was removed from, home or browser.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "shortcuts_shortcut_removed_counter", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "The number of shortcuts the user has on home screen,\n0, 1, 2, 3 or 4 (maximum)\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcuts_on_home_number", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "A string containing the default search engine name.\n", + "mode": "NULLABLE", + "name": "browser_default_search_engine", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.", + "mode": "NULLABLE", + "name": "browser_install_source", + "type": "STRING" + }, + { + "description": "The locale that differs from the system locale if a user\nspecifically overrides it for the app.\n", + "mode": "NULLABLE", + "name": "browser_locale_override", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string that indicates the theme. Can be one of LIGHT, DARK, or FOLLOW DEVICE. Default is FOLLOW DEVICE.\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Sets the legacy client ID as part of the deletion-request ping.\n**No longer reported set since Focus 124, where legacy telemetry was removed**.\n", + "mode": "NULLABLE", + "name": "legacy_ids_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-focus/metrics/metrics.2.schema.json b/schemas/org-mozilla-focus/metrics/metrics.2.schema.json new file mode 100644 index 000000000..e00e2ae49 --- /dev/null +++ b/schemas/org-mozilla-focus/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_focus", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-fennec/health/health.2.bq b/schemas/org-mozilla-ios-fennec/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-ios-fennec/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-fennec/health/health.2.schema.json b/schemas/org-mozilla-ios-fennec/health/health.2.schema.json new file mode 100644 index 000000000..7cfc7b634 --- /dev/null +++ b/schemas/org-mozilla-ios-fennec/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_fennec", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-fennec/metrics/metrics.2.bq b/schemas/org-mozilla-ios-fennec/metrics/metrics.2.bq new file mode 100644 index 000000000..273ceba8b --- /dev/null +++ b/schemas/org-mozilla-ios-fennec/metrics/metrics.2.bq @@ -0,0 +1,2895 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The user installed the app via the browser choice screen\n", + "mode": "NULLABLE", + "name": "app_choice_screen_acquisition", + "type": "BOOL" + }, + { + "description": "Is Firefox the default browser\n", + "mode": "NULLABLE", + "name": "app_default_browser", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks\nin the mobile folder.\n", + "mode": "NULLABLE", + "name": "bookmarks_has_mobile_bookmarks", + "type": "BOOL" + }, + { + "description": "Recorded on startup to check if credit card\nautofill settings are enabled\n", + "mode": "NULLABLE", + "name": "credit_card_autofill_enabled", + "type": "BOOL" + }, + { + "description": "Recorded on startup to check if credit card\nsync settings are enabled\n", + "mode": "NULLABLE", + "name": "credit_card_sync_enabled", + "type": "BOOL" + }, + { + "description": "True if the device support device owner authentication\nwith either biometrics or a passcode.\n", + "mode": "NULLABLE", + "name": "device_authentication", + "type": "BOOL" + }, + { + "description": "Measures the state of the show Pocket stories preference.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_pocket_stories_visible", + "type": "BOOL" + }, + { + "description": "If Focus is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "installed_mozilla_products_focus", + "type": "BOOL" + }, + { + "description": "If Klar is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "installed_mozilla_products_klar", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Close Private Tabs\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_close_private_tabs", + "type": "BOOL" + }, + { + "description": "Measures the state of the fxa login.\n", + "mode": "NULLABLE", + "name": "preferences_fxa_logged_in", + "type": "BOOL" + }, + { + "description": "An indication of whether the Jump back in section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_jump_back_in", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket is enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_pocket", + "type": "BOOL" + }, + { + "description": "An indication of whether the recently saved section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_recently_saved", + "type": "BOOL" + }, + { + "description": "An indication of whether the Recently visited section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_recently_visited", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Save Logins\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_save_logins", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Show Clipboard Bar\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_show_clipboard_bar", + "type": "BOOL" + }, + { + "description": "True if notifications for sync are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "preferences_sync_notifs", + "type": "BOOL" + }, + { + "description": "True if notifications for tips and features are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "preferences_tips_and_features_notifs", + "type": "BOOL" + }, + { + "description": "Indicates if the user has opted out of using the shopping component.\nSet in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has opted out of being shown ads in the Fakespot screen\nexperience. Set in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Indicates if Nimbus has disabled the use the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Indicates if the user has completed the Shopping product Onboarding\nexperience. Set in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_user_has_onboarded", + "type": "BOOL" + }, + { + "description": "Tracks if the user has enabled sponsored shortcuts\n", + "mode": "NULLABLE", + "name": "top_sites_sponsored_shortcuts", + "type": "BOOL" + }, + { + "description": "Measures the state of the tracking-protection enabled\npreference.\n", + "mode": "NULLABLE", + "name": "tracking_protection_enabled", + "type": "BOOL" + }, + { + "description": "Records if the user has shake to summarize option enabled\n", + "mode": "NULLABLE", + "name": "user_ai_summarize_shake_gesture_enabled", + "type": "BOOL" + }, + { + "description": "Records if the user has summarization enabled.\n", + "mode": "NULLABLE", + "name": "user_ai_summarize_summarization_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a user disables Block Images\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_block_images_disabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user enables Block Images\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_block_images_enabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Customize Homepage\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_customize_homepage", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Help in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_help", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Home in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_home", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps in the menu toolbar\non the homepage\n", + "mode": "NULLABLE", + "name": "app_menu_homepage_menu", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Logins & Passwords\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_logins", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Disable Night Mode\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_night_mode_disabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Enable Night Mode\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_night_mode_enabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Settings in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_settings", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Sign Into Sync\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps in the menu toolbar\nfrom a website\n", + "mode": "NULLABLE", + "name": "app_menu_site_menu", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps What's New in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_whats_new", + "type": "INT64" + }, + { + "description": "Counts the number of times the app is opened from an external\nlink, implying the client has Firefox set as a default browser.\n\nCurrently this is our most accurate way of measuring how\noften Firefox is set as the default browser.\n", + "mode": "NULLABLE", + "name": "app_opened_as_default_browser", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been deleted by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been modified by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_modified", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been saved by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_saved", + "type": "INT64" + }, + { + "description": "Counts the number of times default browser card is dismissed.\n", + "mode": "NULLABLE", + "name": "default_browser_card_dismiss_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times the Go To Settings button on\ndefault browser card is clicked.\n", + "mode": "NULLABLE", + "name": "default_browser_card_go_to_settings_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times default browser onboarding is dismissed.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_dismiss_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times the Go To Settings button on\ndefault browser onboarding is clicked.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_go_to_settings_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open the\nsettings menu to customize the Firefox Homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_customize_homepage_button", + "type": "INT64" + }, + { + "description": "The number of times a user sees the Firefox Homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_firefox_homepage_view", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the History Highlights section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_history_highlights_item_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the History section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_history_highlights_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting group from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_group_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the Jump Back In section.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_tab_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user sees a Jump Back In tile\nin the Jump Back In section on the homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_tile_view", + "type": "INT64" + }, + { + "description": "Counts when a user opens Firefox Home\nfrom awesomebar.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_open_from_awesomebar", + "type": "INT64" + }, + { + "description": "Counts when user opens Firefox Home from\nbottom right hamburger menu Home button\nand New Tab button.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_open_from_menu_home_button", + "type": "INT64" + }, + { + "description": "Counts the number of times a bookmarked item in\nthe Recently Saved section is tapped\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_bookmark_item", + "type": "INT64" + }, + { + "description": "Counts the number of times a reading list\nitem in the Recently Saved section is tapped.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_reading_item", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the Show All\nbutton of the Recently Saved Section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open a\nsynced tab from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button of Synced Tab in the Jump Back In section.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user sees the\nSynced Tab tile on the homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_tile_view", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has selected a\nsearch term group inside the history panel. Selecting\nthis item will navigate them to a view containing a list\nof all Site items that appear in that group.\n", + "mode": "NULLABLE", + "name": "history_group_list", + "type": "INT64" + }, + { + "description": "Recorded when a user is shown inactive tab view\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tab_shown", + "type": "INT64" + }, + { + "description": "Recorded when a user swipes to close an inactive tab\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tab_swipe_close", + "type": "INT64" + }, + { + "description": "Recorded when a user taps on close all inactive tabs button\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tabs_close_all_btn", + "type": "INT64" + }, + { + "description": "Recorded when a user taps on an inactive tab\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_open_inactive_tab", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been deleted by the user.\n", + "mode": "NULLABLE", + "name": "logins_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been modified by the user.\n", + "mode": "NULLABLE", + "name": "logins_modified", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been saved by the user.\n", + "mode": "NULLABLE", + "name": "logins_saved", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted locally due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_local_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted in the mirror table due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_mirror_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_write_query_count", + "type": "INT64" + }, + { + "description": "Counts the number of times a user runs the\nsd web image library cache cleanup\n", + "mode": "NULLABLE", + "name": "migration_image_sd_cache_cleanup", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Copy Address\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_copy_address", + "type": "INT64" + }, + { + "description": "Counts the number of times a user creates a new tab from the\npage action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_create_new_tab", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Find in Page\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_find_in_page", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Pin to Top Sites\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_pin_to_top_sites", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Pin to Top Sites\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_remove_pinned_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Report Site Issue\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_report_site_issue", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Request Desktop Site\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_request_desktop_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Request Mobile Site\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_request_mobile_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Send to Device\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_send_to_device", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Share Page With in the\npage action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_share_page_with", + "type": "INT64" + }, + { + "description": "Counts the number of times a user navigates to the downloads panel\nfrom the page action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_view_downloads_panel", + "type": "INT64" + }, + { + "description": "Counts the number of times a user navigates to the history panel\nfrom the page action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_view_history_panel", + "type": "INT64" + }, + { + "description": "The \"use password button\" of the password generator bottom sheet was clicked.\n", + "mode": "NULLABLE", + "name": "password_generator_filled", + "type": "INT64" + }, + { + "description": "The password generator bottom sheet was shown and is visible\n", + "mode": "NULLABLE", + "name": "password_generator_shown", + "type": "INT64" + }, + { + "description": "Counts when a user gets to pocket section\non Firefox Home\n", + "mode": "NULLABLE", + "name": "pocket_section_impressions", + "type": "INT64" + }, + { + "description": "Counts the number of times a QR code is scanned.\n", + "mode": "NULLABLE", + "name": "qr_code_scanned", + "type": "INT64" + }, + { + "description": "Counts how many times the reader mode is closed.\n", + "mode": "NULLABLE", + "name": "reader_mode_close", + "type": "INT64" + }, + { + "description": "Counts how many times the reader mode is opened.\n", + "mode": "NULLABLE", + "name": "reader_mode_open", + "type": "INT64" + }, + { + "description": "Counts the number of times an item is opened from the\nReading List\n", + "mode": "NULLABLE", + "name": "reading_list_open", + "type": "INT64" + }, + { + "description": "Counts the number of times the start search button is\npressed\n", + "mode": "NULLABLE", + "name": "search_start_search_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times setting as default\nbrowser menu option is tapped.\n", + "mode": "NULLABLE", + "name": "settings_menu_set_as_default_browser_pressed", + "type": "INT64" + }, + { + "description": "A count of the number of eligible product pages the user has visited.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps\non create account button in sync library view\n", + "mode": "NULLABLE", + "name": "sync_create_account_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times a user opens\nsynced tab\n", + "mode": "NULLABLE", + "name": "sync_open_tab", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps\non sign in to sync button in sync\nlibrary view\n", + "mode": "NULLABLE", + "name": "sync_sign_in_sync_pressed", + "type": "INT64" + }, + { + "description": "Measures the current open tab count as the application\ngoes to background. Each background event adds to this\nmetric, making it the cumulative sum of all open tabs\nwhen the app goes to background during the period of\ntime covered by a single metrics ping. This can be\ndivided by the number of baseline pings with\n`ping_info.reason=\"inactive\"` from the `start_time` to\nthe `end_time` of the metrics ping to determine the\naverage open tabs per foreground \"session\".\n", + "mode": "NULLABLE", + "name": "tabs_cumulative_count", + "type": "INT64" + }, + { + "description": "Recorded when a user closes the tab in a group\n", + "mode": "NULLABLE", + "name": "tabs_grouped_tab_closed", + "type": "INT64" + }, + { + "description": "This counts the number of times a user has tapped the search\nicon for grouped tabs in the tab tray.\n", + "mode": "NULLABLE", + "name": "tabs_grouped_tab_search", + "type": "INT64" + }, + { + "description": "This counts the number of times a user navigates back in tab\nhistory by swiping from the left edge of the device to the right.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_back_swipe", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the back\nbutton on a tab's toolbar.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_history_back", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the forward\nbutton on a tab's toolbar.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_history_forward", + "type": "INT64" + }, + { + "description": "Counts the number of times the add new tab button is\npressed\n", + "mode": "NULLABLE", + "name": "tabs_new_tab_pressed", + "type": "INT64" + }, + { + "description": "Record the number of URI's visited by the user.\n", + "mode": "NULLABLE", + "name": "tabs_normal_and_private_uri_count", + "type": "INT64" + }, + { + "description": "Record event when user has executed pull to refresh.\n", + "mode": "NULLABLE", + "name": "tabs_pull_to_refresh", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the reload\nbutton in the URL bar.\n", + "mode": "NULLABLE", + "name": "tabs_reload_from_url_bar", + "type": "INT64" + }, + { + "description": "Records the number of times a user clicks to dismiss (does not include tapping accept or remind me later).\n", + "mode": "NULLABLE", + "name": "termsofuse_dismiss_count", + "type": "INT64" + }, + { + "description": "Records the number of ToU impressions the user has had.\n", + "mode": "NULLABLE", + "name": "termsofuse_impression_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user clicks \"remind me later\".\n", + "mode": "NULLABLE", + "name": "termsofuse_remind_me_later_count", + "type": "INT64" + }, + { + "description": "Track how many undecryptable credit cards we scrub during the credit card verification process\n", + "mode": "NULLABLE", + "name": "user_credit_cards_undecryptable_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user taps to dismiss (does not include tapping accept or remind me later).\n\n**Developer Note**: This replaces the old `termsofuse.dismiss_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_dismissed_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user taps \"remind me later\".\n\n**Developer Note**: This replaces the old `termsofuse.remind_me_later_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_remind_me_later_count", + "type": "INT64" + }, + { + "description": "Records the number of ToU impressions the user has had.\n\n**Developer Note**: This replaces the old `termsofuse.impression_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_shown_count", + "type": "INT64" + }, + { + "description": "Counts how many times the large tabs widget opens url\n", + "mode": "NULLABLE", + "name": "widget_l_tabs_open_url", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget closes private tabs\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_close_private", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens copied links\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_copied_link", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens firefox for private search\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_private_search", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens firefox for regular search\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_search", + "type": "INT64" + }, + { + "description": "Counts how many times the medium tabs widget opens url\n", + "mode": "NULLABLE", + "name": "widget_m_tabs_open_url", + "type": "INT64" + }, + { + "description": "Counts how many times user opens top site tabs\n", + "mode": "NULLABLE", + "name": "widget_m_top_sites_widget", + "type": "INT64" + }, + { + "description": "Counts how many times small quick action\nwidget opens firefox for regular search\n", + "mode": "NULLABLE", + "name": "widget_s_quick_action_search", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The date of when the app was last opened as default browser.\n", + "mode": "NULLABLE", + "name": "app_last_opened_as_default_browser", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n", + "mode": "NULLABLE", + "name": "termsofuse_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n\n**Developer Note**: This replaces the old `termsofuse.date` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_date_accepted", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a bookmark is added from the\nfollowing:\n* Page Action Menu\n* Share Menu\n* Activity stream\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_add", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is deleted from\nthe following:\n* Page Action Menu\n* Activity Stream\n* Bookmarks Panel\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_delete", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is tapped to\nbe edited from:\n* Add bookmark toast Edit button\n* Bookmarks panel edit bookmarks view\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is opened from\nthe following:\n* Awesomebar results\n* Bookmarks Panel\n* Top sites\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_open", + "type": "RECORD" + }, + { + "description": "Counts the number of times the bookmarks list is opened\nfrom either the Home Panel tab button or the App Menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_view_list", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is ``.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is ``.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "The number of times a user sees the Firefox Homepage,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_firefox_homepage_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting group from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_group_open_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_tab_opened_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmarked item in\nthe Recently Saved section is tapped,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_bookmark_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a reading list\nitem in the Recently Saved section is tapped,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_read_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the Show All\nbutton of the Recently Saved Section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open a\nsynced tab from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_synced_tab_opened_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the\nShow All button of Synced Tab in the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_synced_tab_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user selected an item from\nthe history panel. This labeled counter will tell apart\nitems that appear inside a group, and those that do not.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "history_selected_item", + "type": "RECORD" + }, + { + "description": "Records when a section has been viewed on the homepage. See `homepage.viewed` for more details on what is considered a homepage view. This event refers to a section that has been scrolled to or seen on an homepage that has been viewed. The labels matches the values in `HomepageTelemetry.ItemType` under `sectionName`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "homepage_section_viewed", + "type": "RECORD" + }, + { + "description": "Counts the number of times user toggle (expand or collapse)\ninactive tab section.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "inactive_tabs_tray_toggle_inactive_tab_tray", + "type": "RECORD" + }, + { + "description": "Counts the number of times a specific library panel\nbutton is tapped for Bookmarks, History, Reading List,\nDownloads and Synced tabs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "library_panel_pressed", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_write_query_error_count", + "type": "RECORD" + }, + { + "description": "Records when a user opens Pocket article from\nFirefox Home Pocket feed, with a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pocket_open_story_origin", + "type": "RECORD" + }, + { + "description": "Counts when a user opens Pocket article from\nFirefox Home Pocket feed.\nThe label is position of tile i.e. 0,1,2...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pocket_open_story_position", + "type": "RECORD" + }, + { + "description": "Counts the number of times an item is added to the reading\nlist from the following:\n* Reader Mode Toolbar\n* Share Extension\n* Page Action Menu\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "reading_list_add", + "type": "RECORD" + }, + { + "description": "Counts the number of times an item is added to the\nreading list from the following:\n* Reader Mode Toolbar\n* Reading List Panel\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "reading_list_delete", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `{search-engine-name}.{source}`\n\nIf the search engine is bundled with Firefox-iOS, then\n`search-engine-name` will be the name of the search engine. If\nit is a custom search engine, the value will be `custom`.\n\nThe value of `source` will reflect the source from which the\nsearch started. One of:\n* quicksearch\n* suggestion\n* actionbar\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_counts", + "type": "RECORD" + }, + { + "description": "Counts the number of times the google top site button\nis pressed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_google_topsite_pressed", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_in_content", + "type": "RECORD" + }, + { + "description": "The count of tabs closed by the user. Increments the\nappropriate label when either a normal or private tab\nis closed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_close", + "type": "RECORD" + }, + { + "description": "The count of times the user closes all tabs. Increments the\nappropriate label when either a normal or private tab\nis closed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_close_all", + "type": "RECORD" + }, + { + "description": "The count of tabs opened by the user. Increments the\nappropriate label when either a normal or private tab\nis opened.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_open", + "type": "RECORD" + }, + { + "description": "Records an event when user taps on top site tile,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "top_sites_pressed_tile_origin", + "type": "RECORD" + }, + { + "description": "Recorded when the user enters the background. This reports\nthe currently selected wallpaper if it's not the default.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "wallpaper_analytics_themed_wallpaper", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "The Nimbus context object that is recorded to Glean\n", + "mode": "NULLABLE", + "name": "nimbus_system_recorded_nimbus_context", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter of the number of all addresses that are currently saved by the user.\n", + "mode": "NULLABLE", + "name": "addresses_saved_all", + "type": "INT64" + }, + { + "description": "A quantity that indicates how many bookmarks a user\nhas in the mobile folder.\n", + "mode": "NULLABLE", + "name": "bookmarks_mobile_bookmarks_count", + "type": "INT64" + }, + { + "description": "Record the number of ALL the credit cards that have been currently stored by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_saved_all", + "type": "INT64" + }, + { + "description": "The number of visits in a User's history database\n", + "mode": "NULLABLE", + "name": "history_num_visits", + "type": "INT64" + }, + { + "description": "Record the number of ALL the passwords that have been currently stored by the user.\n", + "mode": "NULLABLE", + "name": "logins_saved_all", + "type": "INT64" + }, + { + "description": "The number of visits migrated to the places.db\n", + "mode": "NULLABLE", + "name": "places_history_migration_num_migrated", + "type": "INT64" + }, + { + "description": "The number of visits expected to migrate to the places.db\n", + "mode": "NULLABLE", + "name": "places_history_migration_num_to_migrate", + "type": "INT64" + }, + { + "description": "A quantity that indicates how many INACTIVE tabs a user\ncurrently has open. This is reported when the user backgrounds\nthe app.\n", + "mode": "NULLABLE", + "name": "tabs_inactive_tabs_count", + "type": "INT64" + }, + { + "description": "A snapshot of how many normal tabs a user has opened when he\ncloses the application.\n", + "mode": "NULLABLE", + "name": "tabs_normal_tabs_quantity", + "type": "INT64" + }, + { + "description": "A snapshot of how many private tabs a user has opened when he\ncloses the application.\n", + "mode": "NULLABLE", + "name": "tabs_private_tabs_quantity", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n", + "mode": "NULLABLE", + "name": "termsofuse_version", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n\n**Developer Note**: This replaces the old `termsofuse.version` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_version_accepted", + "type": "INT64" + }, + { + "description": "A snapshot of how many windows the user has opened on iPad.\n", + "mode": "NULLABLE", + "name": "windows_ipad_window_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A Rate of how often migrations end\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_migration_ended_rate", + "type": "RECORD" + }, + { + "description": "A Rate of how often migrations error out\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_migration_error_rate", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A string containing the Adjust ad group ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_ad_group", + "type": "STRING" + }, + { + "description": "A string containing the Adjust campaign ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_campaign", + "type": "STRING" + }, + { + "description": "A string containing the Adjust creative ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_creative", + "type": "STRING" + }, + { + "description": "A string containing the Adjust network ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "The setting a user chooses as their Home page. By default,\nit is initially set to Firefox Home.\n", + "mode": "NULLABLE", + "name": "preferences_home_page_setting", + "type": "STRING" + }, + { + "description": "The name of the view that the user wants to see on new tabs.\nFor example History, Homepage or Blank. It is used to measure\nusage of this feature, to see how effective feature promotion\ncampaigns are and to establish a baseline number for when we\nintroduce the new Activity Stream features.\n", + "mode": "NULLABLE", + "name": "preferences_new_tab_experience", + "type": "STRING" + }, + { + "description": "What opening screen preference the user has selected under\n\"Customize Home\". \"homepage,\" \"last tab,\" or\n\"homepage after 4 hours\" default: \"homepage after 4 hours\".\n", + "mode": "NULLABLE", + "name": "preferences_opening_screen", + "type": "STRING" + }, + { + "description": "The default search engine identifier if the search engine is\npre-loaded with Firefox-iOS. If it's a custom search engine,\nthen the value will be 'custom'.\n", + "mode": "NULLABLE", + "name": "search_default_engine", + "type": "STRING" + }, + { + "description": "A string representing the selected strength of the\ntracking-protection that is enabled. One of:\n* basic\n* strict\n", + "mode": "NULLABLE", + "name": "tracking_protection_strength", + "type": "STRING" + }, + { + "description": "Records the user's preference for the middle button (newTab or home).\n", + "mode": "NULLABLE", + "name": "user_toolbar_middle_button_type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the total time for generating the summary and showing it to the user.\nStarts when the user triggers summarization.\nEnds when user sees the result or an error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ai_summarize_summarization_time", + "type": "RECORD" + }, + { + "description": "The time a query against awesomebar took. This helps us understand the performance of the awesomebar in querying history and bookmarks. The query time will also help us verify that we are **not** introducing any performance regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "awesomebar_query_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "A time distribution of how long it took for the migration to occur\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_duration", + "type": "RECORD" + }, + { + "description": "Track the startup time of the application when the app was launched to open a url.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "share_deeplink_open_url_startup_time", + "type": "RECORD" + }, + { + "description": "Counts how long it takes to switch to another tab\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tabs_tab_switch", + "type": "RECORD" + }, + { + "description": "Counts how long each page takes to load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webview_page_load", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client id from legacy telemetry.\n", + "mode": "NULLABLE", + "name": "legacy_ids_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-fennec/metrics/metrics.2.schema.json b/schemas/org-mozilla-ios-fennec/metrics/metrics.2.schema.json new file mode 100644 index 000000000..f718bd7e4 --- /dev/null +++ b/schemas/org-mozilla-ios-fennec/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_fennec", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-fennec/usage-reporting/usage-reporting.2.bq b/schemas/org-mozilla-ios-fennec/usage-reporting/usage-reporting.2.bq new file mode 100644 index 000000000..66005a004 --- /dev/null +++ b/schemas/org-mozilla-ios-fennec/usage-reporting/usage-reporting.2.bq @@ -0,0 +1,522 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Was the app installed using MDM software.\n", + "mode": "NULLABLE", + "name": "usage_is_managed_device", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The timestamp when the user accepted the Terms of Use.\n", + "mode": "NULLABLE", + "name": "termsofuse_date", + "type": "STRING" + }, + { + "description": "The date of the first run of the application.\n", + "mode": "NULLABLE", + "name": "usage_first_run_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n\n**Developer Note**: This replaces the old `termsofuse.date` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_date_accepted", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The version of the Terms of Use the user accepted.\n", + "mode": "NULLABLE", + "name": "termsofuse_version", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n\n**Developer Note**: This replaces the old `termsofuse.version` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_version_accepted", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\").\nIf the value was not provided through configuration,\nthis metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.\n", + "mode": "NULLABLE", + "name": "usage_app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\").\nIf the value was not provided through configuration,\nthis metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_app_display_version", + "type": "STRING" + }, + { + "description": "The name of the operating system.\nPossible values:\nAndroid, iOS, Linux, Darwin, Windows,\nFreeBSD, NetBSD, OpenBSD, Solaris, Unknown\n", + "mode": "NULLABLE", + "name": "usage_os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\").\nIf the version detection fails, this metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_os_version", + "type": "STRING" + }, + { + "description": "The optional reason the ping was submitted.\nThe specific values for reason are specific to each ping, and are\ndocumented in the ping's pings.yaml file.\n", + "mode": "NULLABLE", + "name": "usage_reason", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The duration of the last foreground session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "usage_duration", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The duration of the last foreground session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "usage_duration", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A UUID uniquely identifying the profile,\nnot shared with other telemetry data.\n", + "mode": "NULLABLE", + "name": "usage_profile_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-fennec/usage-reporting/usage-reporting.2.schema.json b/schemas/org-mozilla-ios-fennec/usage-reporting/usage-reporting.2.schema.json new file mode 100644 index 000000000..71fa4f90a --- /dev/null +++ b/schemas/org-mozilla-ios-fennec/usage-reporting/usage-reporting.2.schema.json @@ -0,0 +1,589 @@ +{ + "$id":"moz://mozilla.org/schemas/glean-min/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean min ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_fennec", + "bq_metadata_format":"structured", + "bq_table":"usage_reporting_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":false, + "include_info_sections":false + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + } + }, + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefox/health/health.2.bq b/schemas/org-mozilla-ios-firefox/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-ios-firefox/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefox/health/health.2.schema.json b/schemas/org-mozilla-ios-firefox/health/health.2.schema.json new file mode 100644 index 000000000..526946c4e --- /dev/null +++ b/schemas/org-mozilla-ios-firefox/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefox", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefox/metrics/metrics.2.bq b/schemas/org-mozilla-ios-firefox/metrics/metrics.2.bq new file mode 100644 index 000000000..273ceba8b --- /dev/null +++ b/schemas/org-mozilla-ios-firefox/metrics/metrics.2.bq @@ -0,0 +1,2895 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The user installed the app via the browser choice screen\n", + "mode": "NULLABLE", + "name": "app_choice_screen_acquisition", + "type": "BOOL" + }, + { + "description": "Is Firefox the default browser\n", + "mode": "NULLABLE", + "name": "app_default_browser", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks\nin the mobile folder.\n", + "mode": "NULLABLE", + "name": "bookmarks_has_mobile_bookmarks", + "type": "BOOL" + }, + { + "description": "Recorded on startup to check if credit card\nautofill settings are enabled\n", + "mode": "NULLABLE", + "name": "credit_card_autofill_enabled", + "type": "BOOL" + }, + { + "description": "Recorded on startup to check if credit card\nsync settings are enabled\n", + "mode": "NULLABLE", + "name": "credit_card_sync_enabled", + "type": "BOOL" + }, + { + "description": "True if the device support device owner authentication\nwith either biometrics or a passcode.\n", + "mode": "NULLABLE", + "name": "device_authentication", + "type": "BOOL" + }, + { + "description": "Measures the state of the show Pocket stories preference.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_pocket_stories_visible", + "type": "BOOL" + }, + { + "description": "If Focus is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "installed_mozilla_products_focus", + "type": "BOOL" + }, + { + "description": "If Klar is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "installed_mozilla_products_klar", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Close Private Tabs\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_close_private_tabs", + "type": "BOOL" + }, + { + "description": "Measures the state of the fxa login.\n", + "mode": "NULLABLE", + "name": "preferences_fxa_logged_in", + "type": "BOOL" + }, + { + "description": "An indication of whether the Jump back in section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_jump_back_in", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket is enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_pocket", + "type": "BOOL" + }, + { + "description": "An indication of whether the recently saved section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_recently_saved", + "type": "BOOL" + }, + { + "description": "An indication of whether the Recently visited section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_recently_visited", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Save Logins\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_save_logins", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Show Clipboard Bar\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_show_clipboard_bar", + "type": "BOOL" + }, + { + "description": "True if notifications for sync are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "preferences_sync_notifs", + "type": "BOOL" + }, + { + "description": "True if notifications for tips and features are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "preferences_tips_and_features_notifs", + "type": "BOOL" + }, + { + "description": "Indicates if the user has opted out of using the shopping component.\nSet in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has opted out of being shown ads in the Fakespot screen\nexperience. Set in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Indicates if Nimbus has disabled the use the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Indicates if the user has completed the Shopping product Onboarding\nexperience. Set in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_user_has_onboarded", + "type": "BOOL" + }, + { + "description": "Tracks if the user has enabled sponsored shortcuts\n", + "mode": "NULLABLE", + "name": "top_sites_sponsored_shortcuts", + "type": "BOOL" + }, + { + "description": "Measures the state of the tracking-protection enabled\npreference.\n", + "mode": "NULLABLE", + "name": "tracking_protection_enabled", + "type": "BOOL" + }, + { + "description": "Records if the user has shake to summarize option enabled\n", + "mode": "NULLABLE", + "name": "user_ai_summarize_shake_gesture_enabled", + "type": "BOOL" + }, + { + "description": "Records if the user has summarization enabled.\n", + "mode": "NULLABLE", + "name": "user_ai_summarize_summarization_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a user disables Block Images\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_block_images_disabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user enables Block Images\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_block_images_enabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Customize Homepage\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_customize_homepage", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Help in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_help", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Home in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_home", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps in the menu toolbar\non the homepage\n", + "mode": "NULLABLE", + "name": "app_menu_homepage_menu", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Logins & Passwords\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_logins", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Disable Night Mode\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_night_mode_disabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Enable Night Mode\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_night_mode_enabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Settings in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_settings", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Sign Into Sync\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps in the menu toolbar\nfrom a website\n", + "mode": "NULLABLE", + "name": "app_menu_site_menu", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps What's New in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_whats_new", + "type": "INT64" + }, + { + "description": "Counts the number of times the app is opened from an external\nlink, implying the client has Firefox set as a default browser.\n\nCurrently this is our most accurate way of measuring how\noften Firefox is set as the default browser.\n", + "mode": "NULLABLE", + "name": "app_opened_as_default_browser", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been deleted by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been modified by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_modified", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been saved by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_saved", + "type": "INT64" + }, + { + "description": "Counts the number of times default browser card is dismissed.\n", + "mode": "NULLABLE", + "name": "default_browser_card_dismiss_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times the Go To Settings button on\ndefault browser card is clicked.\n", + "mode": "NULLABLE", + "name": "default_browser_card_go_to_settings_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times default browser onboarding is dismissed.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_dismiss_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times the Go To Settings button on\ndefault browser onboarding is clicked.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_go_to_settings_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open the\nsettings menu to customize the Firefox Homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_customize_homepage_button", + "type": "INT64" + }, + { + "description": "The number of times a user sees the Firefox Homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_firefox_homepage_view", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the History Highlights section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_history_highlights_item_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the History section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_history_highlights_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting group from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_group_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the Jump Back In section.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_tab_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user sees a Jump Back In tile\nin the Jump Back In section on the homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_tile_view", + "type": "INT64" + }, + { + "description": "Counts when a user opens Firefox Home\nfrom awesomebar.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_open_from_awesomebar", + "type": "INT64" + }, + { + "description": "Counts when user opens Firefox Home from\nbottom right hamburger menu Home button\nand New Tab button.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_open_from_menu_home_button", + "type": "INT64" + }, + { + "description": "Counts the number of times a bookmarked item in\nthe Recently Saved section is tapped\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_bookmark_item", + "type": "INT64" + }, + { + "description": "Counts the number of times a reading list\nitem in the Recently Saved section is tapped.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_reading_item", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the Show All\nbutton of the Recently Saved Section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open a\nsynced tab from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button of Synced Tab in the Jump Back In section.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user sees the\nSynced Tab tile on the homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_tile_view", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has selected a\nsearch term group inside the history panel. Selecting\nthis item will navigate them to a view containing a list\nof all Site items that appear in that group.\n", + "mode": "NULLABLE", + "name": "history_group_list", + "type": "INT64" + }, + { + "description": "Recorded when a user is shown inactive tab view\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tab_shown", + "type": "INT64" + }, + { + "description": "Recorded when a user swipes to close an inactive tab\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tab_swipe_close", + "type": "INT64" + }, + { + "description": "Recorded when a user taps on close all inactive tabs button\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tabs_close_all_btn", + "type": "INT64" + }, + { + "description": "Recorded when a user taps on an inactive tab\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_open_inactive_tab", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been deleted by the user.\n", + "mode": "NULLABLE", + "name": "logins_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been modified by the user.\n", + "mode": "NULLABLE", + "name": "logins_modified", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been saved by the user.\n", + "mode": "NULLABLE", + "name": "logins_saved", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted locally due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_local_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted in the mirror table due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_mirror_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_write_query_count", + "type": "INT64" + }, + { + "description": "Counts the number of times a user runs the\nsd web image library cache cleanup\n", + "mode": "NULLABLE", + "name": "migration_image_sd_cache_cleanup", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Copy Address\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_copy_address", + "type": "INT64" + }, + { + "description": "Counts the number of times a user creates a new tab from the\npage action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_create_new_tab", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Find in Page\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_find_in_page", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Pin to Top Sites\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_pin_to_top_sites", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Pin to Top Sites\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_remove_pinned_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Report Site Issue\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_report_site_issue", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Request Desktop Site\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_request_desktop_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Request Mobile Site\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_request_mobile_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Send to Device\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_send_to_device", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Share Page With in the\npage action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_share_page_with", + "type": "INT64" + }, + { + "description": "Counts the number of times a user navigates to the downloads panel\nfrom the page action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_view_downloads_panel", + "type": "INT64" + }, + { + "description": "Counts the number of times a user navigates to the history panel\nfrom the page action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_view_history_panel", + "type": "INT64" + }, + { + "description": "The \"use password button\" of the password generator bottom sheet was clicked.\n", + "mode": "NULLABLE", + "name": "password_generator_filled", + "type": "INT64" + }, + { + "description": "The password generator bottom sheet was shown and is visible\n", + "mode": "NULLABLE", + "name": "password_generator_shown", + "type": "INT64" + }, + { + "description": "Counts when a user gets to pocket section\non Firefox Home\n", + "mode": "NULLABLE", + "name": "pocket_section_impressions", + "type": "INT64" + }, + { + "description": "Counts the number of times a QR code is scanned.\n", + "mode": "NULLABLE", + "name": "qr_code_scanned", + "type": "INT64" + }, + { + "description": "Counts how many times the reader mode is closed.\n", + "mode": "NULLABLE", + "name": "reader_mode_close", + "type": "INT64" + }, + { + "description": "Counts how many times the reader mode is opened.\n", + "mode": "NULLABLE", + "name": "reader_mode_open", + "type": "INT64" + }, + { + "description": "Counts the number of times an item is opened from the\nReading List\n", + "mode": "NULLABLE", + "name": "reading_list_open", + "type": "INT64" + }, + { + "description": "Counts the number of times the start search button is\npressed\n", + "mode": "NULLABLE", + "name": "search_start_search_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times setting as default\nbrowser menu option is tapped.\n", + "mode": "NULLABLE", + "name": "settings_menu_set_as_default_browser_pressed", + "type": "INT64" + }, + { + "description": "A count of the number of eligible product pages the user has visited.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps\non create account button in sync library view\n", + "mode": "NULLABLE", + "name": "sync_create_account_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times a user opens\nsynced tab\n", + "mode": "NULLABLE", + "name": "sync_open_tab", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps\non sign in to sync button in sync\nlibrary view\n", + "mode": "NULLABLE", + "name": "sync_sign_in_sync_pressed", + "type": "INT64" + }, + { + "description": "Measures the current open tab count as the application\ngoes to background. Each background event adds to this\nmetric, making it the cumulative sum of all open tabs\nwhen the app goes to background during the period of\ntime covered by a single metrics ping. This can be\ndivided by the number of baseline pings with\n`ping_info.reason=\"inactive\"` from the `start_time` to\nthe `end_time` of the metrics ping to determine the\naverage open tabs per foreground \"session\".\n", + "mode": "NULLABLE", + "name": "tabs_cumulative_count", + "type": "INT64" + }, + { + "description": "Recorded when a user closes the tab in a group\n", + "mode": "NULLABLE", + "name": "tabs_grouped_tab_closed", + "type": "INT64" + }, + { + "description": "This counts the number of times a user has tapped the search\nicon for grouped tabs in the tab tray.\n", + "mode": "NULLABLE", + "name": "tabs_grouped_tab_search", + "type": "INT64" + }, + { + "description": "This counts the number of times a user navigates back in tab\nhistory by swiping from the left edge of the device to the right.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_back_swipe", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the back\nbutton on a tab's toolbar.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_history_back", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the forward\nbutton on a tab's toolbar.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_history_forward", + "type": "INT64" + }, + { + "description": "Counts the number of times the add new tab button is\npressed\n", + "mode": "NULLABLE", + "name": "tabs_new_tab_pressed", + "type": "INT64" + }, + { + "description": "Record the number of URI's visited by the user.\n", + "mode": "NULLABLE", + "name": "tabs_normal_and_private_uri_count", + "type": "INT64" + }, + { + "description": "Record event when user has executed pull to refresh.\n", + "mode": "NULLABLE", + "name": "tabs_pull_to_refresh", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the reload\nbutton in the URL bar.\n", + "mode": "NULLABLE", + "name": "tabs_reload_from_url_bar", + "type": "INT64" + }, + { + "description": "Records the number of times a user clicks to dismiss (does not include tapping accept or remind me later).\n", + "mode": "NULLABLE", + "name": "termsofuse_dismiss_count", + "type": "INT64" + }, + { + "description": "Records the number of ToU impressions the user has had.\n", + "mode": "NULLABLE", + "name": "termsofuse_impression_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user clicks \"remind me later\".\n", + "mode": "NULLABLE", + "name": "termsofuse_remind_me_later_count", + "type": "INT64" + }, + { + "description": "Track how many undecryptable credit cards we scrub during the credit card verification process\n", + "mode": "NULLABLE", + "name": "user_credit_cards_undecryptable_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user taps to dismiss (does not include tapping accept or remind me later).\n\n**Developer Note**: This replaces the old `termsofuse.dismiss_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_dismissed_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user taps \"remind me later\".\n\n**Developer Note**: This replaces the old `termsofuse.remind_me_later_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_remind_me_later_count", + "type": "INT64" + }, + { + "description": "Records the number of ToU impressions the user has had.\n\n**Developer Note**: This replaces the old `termsofuse.impression_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_shown_count", + "type": "INT64" + }, + { + "description": "Counts how many times the large tabs widget opens url\n", + "mode": "NULLABLE", + "name": "widget_l_tabs_open_url", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget closes private tabs\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_close_private", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens copied links\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_copied_link", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens firefox for private search\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_private_search", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens firefox for regular search\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_search", + "type": "INT64" + }, + { + "description": "Counts how many times the medium tabs widget opens url\n", + "mode": "NULLABLE", + "name": "widget_m_tabs_open_url", + "type": "INT64" + }, + { + "description": "Counts how many times user opens top site tabs\n", + "mode": "NULLABLE", + "name": "widget_m_top_sites_widget", + "type": "INT64" + }, + { + "description": "Counts how many times small quick action\nwidget opens firefox for regular search\n", + "mode": "NULLABLE", + "name": "widget_s_quick_action_search", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The date of when the app was last opened as default browser.\n", + "mode": "NULLABLE", + "name": "app_last_opened_as_default_browser", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n", + "mode": "NULLABLE", + "name": "termsofuse_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n\n**Developer Note**: This replaces the old `termsofuse.date` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_date_accepted", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a bookmark is added from the\nfollowing:\n* Page Action Menu\n* Share Menu\n* Activity stream\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_add", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is deleted from\nthe following:\n* Page Action Menu\n* Activity Stream\n* Bookmarks Panel\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_delete", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is tapped to\nbe edited from:\n* Add bookmark toast Edit button\n* Bookmarks panel edit bookmarks view\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is opened from\nthe following:\n* Awesomebar results\n* Bookmarks Panel\n* Top sites\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_open", + "type": "RECORD" + }, + { + "description": "Counts the number of times the bookmarks list is opened\nfrom either the Home Panel tab button or the App Menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_view_list", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is ``.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is ``.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "The number of times a user sees the Firefox Homepage,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_firefox_homepage_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting group from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_group_open_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_tab_opened_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmarked item in\nthe Recently Saved section is tapped,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_bookmark_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a reading list\nitem in the Recently Saved section is tapped,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_read_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the Show All\nbutton of the Recently Saved Section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open a\nsynced tab from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_synced_tab_opened_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the\nShow All button of Synced Tab in the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_synced_tab_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user selected an item from\nthe history panel. This labeled counter will tell apart\nitems that appear inside a group, and those that do not.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "history_selected_item", + "type": "RECORD" + }, + { + "description": "Records when a section has been viewed on the homepage. See `homepage.viewed` for more details on what is considered a homepage view. This event refers to a section that has been scrolled to or seen on an homepage that has been viewed. The labels matches the values in `HomepageTelemetry.ItemType` under `sectionName`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "homepage_section_viewed", + "type": "RECORD" + }, + { + "description": "Counts the number of times user toggle (expand or collapse)\ninactive tab section.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "inactive_tabs_tray_toggle_inactive_tab_tray", + "type": "RECORD" + }, + { + "description": "Counts the number of times a specific library panel\nbutton is tapped for Bookmarks, History, Reading List,\nDownloads and Synced tabs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "library_panel_pressed", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_write_query_error_count", + "type": "RECORD" + }, + { + "description": "Records when a user opens Pocket article from\nFirefox Home Pocket feed, with a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pocket_open_story_origin", + "type": "RECORD" + }, + { + "description": "Counts when a user opens Pocket article from\nFirefox Home Pocket feed.\nThe label is position of tile i.e. 0,1,2...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pocket_open_story_position", + "type": "RECORD" + }, + { + "description": "Counts the number of times an item is added to the reading\nlist from the following:\n* Reader Mode Toolbar\n* Share Extension\n* Page Action Menu\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "reading_list_add", + "type": "RECORD" + }, + { + "description": "Counts the number of times an item is added to the\nreading list from the following:\n* Reader Mode Toolbar\n* Reading List Panel\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "reading_list_delete", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `{search-engine-name}.{source}`\n\nIf the search engine is bundled with Firefox-iOS, then\n`search-engine-name` will be the name of the search engine. If\nit is a custom search engine, the value will be `custom`.\n\nThe value of `source` will reflect the source from which the\nsearch started. One of:\n* quicksearch\n* suggestion\n* actionbar\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_counts", + "type": "RECORD" + }, + { + "description": "Counts the number of times the google top site button\nis pressed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_google_topsite_pressed", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_in_content", + "type": "RECORD" + }, + { + "description": "The count of tabs closed by the user. Increments the\nappropriate label when either a normal or private tab\nis closed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_close", + "type": "RECORD" + }, + { + "description": "The count of times the user closes all tabs. Increments the\nappropriate label when either a normal or private tab\nis closed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_close_all", + "type": "RECORD" + }, + { + "description": "The count of tabs opened by the user. Increments the\nappropriate label when either a normal or private tab\nis opened.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_open", + "type": "RECORD" + }, + { + "description": "Records an event when user taps on top site tile,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "top_sites_pressed_tile_origin", + "type": "RECORD" + }, + { + "description": "Recorded when the user enters the background. This reports\nthe currently selected wallpaper if it's not the default.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "wallpaper_analytics_themed_wallpaper", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "The Nimbus context object that is recorded to Glean\n", + "mode": "NULLABLE", + "name": "nimbus_system_recorded_nimbus_context", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter of the number of all addresses that are currently saved by the user.\n", + "mode": "NULLABLE", + "name": "addresses_saved_all", + "type": "INT64" + }, + { + "description": "A quantity that indicates how many bookmarks a user\nhas in the mobile folder.\n", + "mode": "NULLABLE", + "name": "bookmarks_mobile_bookmarks_count", + "type": "INT64" + }, + { + "description": "Record the number of ALL the credit cards that have been currently stored by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_saved_all", + "type": "INT64" + }, + { + "description": "The number of visits in a User's history database\n", + "mode": "NULLABLE", + "name": "history_num_visits", + "type": "INT64" + }, + { + "description": "Record the number of ALL the passwords that have been currently stored by the user.\n", + "mode": "NULLABLE", + "name": "logins_saved_all", + "type": "INT64" + }, + { + "description": "The number of visits migrated to the places.db\n", + "mode": "NULLABLE", + "name": "places_history_migration_num_migrated", + "type": "INT64" + }, + { + "description": "The number of visits expected to migrate to the places.db\n", + "mode": "NULLABLE", + "name": "places_history_migration_num_to_migrate", + "type": "INT64" + }, + { + "description": "A quantity that indicates how many INACTIVE tabs a user\ncurrently has open. This is reported when the user backgrounds\nthe app.\n", + "mode": "NULLABLE", + "name": "tabs_inactive_tabs_count", + "type": "INT64" + }, + { + "description": "A snapshot of how many normal tabs a user has opened when he\ncloses the application.\n", + "mode": "NULLABLE", + "name": "tabs_normal_tabs_quantity", + "type": "INT64" + }, + { + "description": "A snapshot of how many private tabs a user has opened when he\ncloses the application.\n", + "mode": "NULLABLE", + "name": "tabs_private_tabs_quantity", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n", + "mode": "NULLABLE", + "name": "termsofuse_version", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n\n**Developer Note**: This replaces the old `termsofuse.version` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_version_accepted", + "type": "INT64" + }, + { + "description": "A snapshot of how many windows the user has opened on iPad.\n", + "mode": "NULLABLE", + "name": "windows_ipad_window_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A Rate of how often migrations end\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_migration_ended_rate", + "type": "RECORD" + }, + { + "description": "A Rate of how often migrations error out\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_migration_error_rate", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A string containing the Adjust ad group ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_ad_group", + "type": "STRING" + }, + { + "description": "A string containing the Adjust campaign ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_campaign", + "type": "STRING" + }, + { + "description": "A string containing the Adjust creative ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_creative", + "type": "STRING" + }, + { + "description": "A string containing the Adjust network ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "The setting a user chooses as their Home page. By default,\nit is initially set to Firefox Home.\n", + "mode": "NULLABLE", + "name": "preferences_home_page_setting", + "type": "STRING" + }, + { + "description": "The name of the view that the user wants to see on new tabs.\nFor example History, Homepage or Blank. It is used to measure\nusage of this feature, to see how effective feature promotion\ncampaigns are and to establish a baseline number for when we\nintroduce the new Activity Stream features.\n", + "mode": "NULLABLE", + "name": "preferences_new_tab_experience", + "type": "STRING" + }, + { + "description": "What opening screen preference the user has selected under\n\"Customize Home\". \"homepage,\" \"last tab,\" or\n\"homepage after 4 hours\" default: \"homepage after 4 hours\".\n", + "mode": "NULLABLE", + "name": "preferences_opening_screen", + "type": "STRING" + }, + { + "description": "The default search engine identifier if the search engine is\npre-loaded with Firefox-iOS. If it's a custom search engine,\nthen the value will be 'custom'.\n", + "mode": "NULLABLE", + "name": "search_default_engine", + "type": "STRING" + }, + { + "description": "A string representing the selected strength of the\ntracking-protection that is enabled. One of:\n* basic\n* strict\n", + "mode": "NULLABLE", + "name": "tracking_protection_strength", + "type": "STRING" + }, + { + "description": "Records the user's preference for the middle button (newTab or home).\n", + "mode": "NULLABLE", + "name": "user_toolbar_middle_button_type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the total time for generating the summary and showing it to the user.\nStarts when the user triggers summarization.\nEnds when user sees the result or an error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ai_summarize_summarization_time", + "type": "RECORD" + }, + { + "description": "The time a query against awesomebar took. This helps us understand the performance of the awesomebar in querying history and bookmarks. The query time will also help us verify that we are **not** introducing any performance regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "awesomebar_query_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "A time distribution of how long it took for the migration to occur\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_duration", + "type": "RECORD" + }, + { + "description": "Track the startup time of the application when the app was launched to open a url.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "share_deeplink_open_url_startup_time", + "type": "RECORD" + }, + { + "description": "Counts how long it takes to switch to another tab\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tabs_tab_switch", + "type": "RECORD" + }, + { + "description": "Counts how long each page takes to load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webview_page_load", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client id from legacy telemetry.\n", + "mode": "NULLABLE", + "name": "legacy_ids_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefox/metrics/metrics.2.schema.json b/schemas/org-mozilla-ios-firefox/metrics/metrics.2.schema.json new file mode 100644 index 000000000..dda89aef4 --- /dev/null +++ b/schemas/org-mozilla-ios-firefox/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefox", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefox/usage-reporting/usage-reporting.2.bq b/schemas/org-mozilla-ios-firefox/usage-reporting/usage-reporting.2.bq new file mode 100644 index 000000000..66005a004 --- /dev/null +++ b/schemas/org-mozilla-ios-firefox/usage-reporting/usage-reporting.2.bq @@ -0,0 +1,522 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Was the app installed using MDM software.\n", + "mode": "NULLABLE", + "name": "usage_is_managed_device", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The timestamp when the user accepted the Terms of Use.\n", + "mode": "NULLABLE", + "name": "termsofuse_date", + "type": "STRING" + }, + { + "description": "The date of the first run of the application.\n", + "mode": "NULLABLE", + "name": "usage_first_run_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n\n**Developer Note**: This replaces the old `termsofuse.date` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_date_accepted", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The version of the Terms of Use the user accepted.\n", + "mode": "NULLABLE", + "name": "termsofuse_version", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n\n**Developer Note**: This replaces the old `termsofuse.version` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_version_accepted", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\").\nIf the value was not provided through configuration,\nthis metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.\n", + "mode": "NULLABLE", + "name": "usage_app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\").\nIf the value was not provided through configuration,\nthis metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_app_display_version", + "type": "STRING" + }, + { + "description": "The name of the operating system.\nPossible values:\nAndroid, iOS, Linux, Darwin, Windows,\nFreeBSD, NetBSD, OpenBSD, Solaris, Unknown\n", + "mode": "NULLABLE", + "name": "usage_os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\").\nIf the version detection fails, this metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_os_version", + "type": "STRING" + }, + { + "description": "The optional reason the ping was submitted.\nThe specific values for reason are specific to each ping, and are\ndocumented in the ping's pings.yaml file.\n", + "mode": "NULLABLE", + "name": "usage_reason", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The duration of the last foreground session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "usage_duration", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The duration of the last foreground session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "usage_duration", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A UUID uniquely identifying the profile,\nnot shared with other telemetry data.\n", + "mode": "NULLABLE", + "name": "usage_profile_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefox/usage-reporting/usage-reporting.2.schema.json b/schemas/org-mozilla-ios-firefox/usage-reporting/usage-reporting.2.schema.json new file mode 100644 index 000000000..759902577 --- /dev/null +++ b/schemas/org-mozilla-ios-firefox/usage-reporting/usage-reporting.2.schema.json @@ -0,0 +1,589 @@ +{ + "$id":"moz://mozilla.org/schemas/glean-min/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean min ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefox", + "bq_metadata_format":"structured", + "bq_table":"usage_reporting_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":false, + "include_info_sections":false + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + } + }, + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxbeta/health/health.2.bq b/schemas/org-mozilla-ios-firefoxbeta/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxbeta/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxbeta/health/health.2.schema.json b/schemas/org-mozilla-ios-firefoxbeta/health/health.2.schema.json new file mode 100644 index 000000000..4e279e791 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxbeta/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxbeta", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxbeta/metrics/metrics.2.bq b/schemas/org-mozilla-ios-firefoxbeta/metrics/metrics.2.bq new file mode 100644 index 000000000..273ceba8b --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxbeta/metrics/metrics.2.bq @@ -0,0 +1,2895 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The user installed the app via the browser choice screen\n", + "mode": "NULLABLE", + "name": "app_choice_screen_acquisition", + "type": "BOOL" + }, + { + "description": "Is Firefox the default browser\n", + "mode": "NULLABLE", + "name": "app_default_browser", + "type": "BOOL" + }, + { + "description": "A boolean that indicates if the user has bookmarks\nin the mobile folder.\n", + "mode": "NULLABLE", + "name": "bookmarks_has_mobile_bookmarks", + "type": "BOOL" + }, + { + "description": "Recorded on startup to check if credit card\nautofill settings are enabled\n", + "mode": "NULLABLE", + "name": "credit_card_autofill_enabled", + "type": "BOOL" + }, + { + "description": "Recorded on startup to check if credit card\nsync settings are enabled\n", + "mode": "NULLABLE", + "name": "credit_card_sync_enabled", + "type": "BOOL" + }, + { + "description": "True if the device support device owner authentication\nwith either biometrics or a passcode.\n", + "mode": "NULLABLE", + "name": "device_authentication", + "type": "BOOL" + }, + { + "description": "Measures the state of the show Pocket stories preference.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_pocket_stories_visible", + "type": "BOOL" + }, + { + "description": "If Focus is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "installed_mozilla_products_focus", + "type": "BOOL" + }, + { + "description": "If Klar is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "installed_mozilla_products_klar", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Close Private Tabs\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_close_private_tabs", + "type": "BOOL" + }, + { + "description": "Measures the state of the fxa login.\n", + "mode": "NULLABLE", + "name": "preferences_fxa_logged_in", + "type": "BOOL" + }, + { + "description": "An indication of whether the Jump back in section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_jump_back_in", + "type": "BOOL" + }, + { + "description": "An indication of whether Pocket is enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_pocket", + "type": "BOOL" + }, + { + "description": "An indication of whether the recently saved section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_recently_saved", + "type": "BOOL" + }, + { + "description": "An indication of whether the Recently visited section\nis enabled to be displayed.\n", + "mode": "NULLABLE", + "name": "preferences_recently_visited", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Save Logins\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_save_logins", + "type": "BOOL" + }, + { + "description": "Measures the state of the \"Show Clipboard Bar\" preference.\n", + "mode": "NULLABLE", + "name": "preferences_show_clipboard_bar", + "type": "BOOL" + }, + { + "description": "True if notifications for sync are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "preferences_sync_notifs", + "type": "BOOL" + }, + { + "description": "True if notifications for tips and features are allowed, otherwise false.\n", + "mode": "NULLABLE", + "name": "preferences_tips_and_features_notifs", + "type": "BOOL" + }, + { + "description": "Indicates if the user has opted out of using the shopping component.\nSet in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_component_opted_out", + "type": "BOOL" + }, + { + "description": "Indicates if the user has opted out of being shown ads in the Fakespot screen\nexperience. Set in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_disabled_ads", + "type": "BOOL" + }, + { + "description": "Indicates if Nimbus has disabled the use the shopping component.\n", + "mode": "NULLABLE", + "name": "shopping_settings_nimbus_disabled_shopping", + "type": "BOOL" + }, + { + "description": "Indicates if the user has completed the Shopping product Onboarding\nexperience. Set in BrowserViewController and updated when changed by user.\n", + "mode": "NULLABLE", + "name": "shopping_settings_user_has_onboarded", + "type": "BOOL" + }, + { + "description": "Tracks if the user has enabled sponsored shortcuts\n", + "mode": "NULLABLE", + "name": "top_sites_sponsored_shortcuts", + "type": "BOOL" + }, + { + "description": "Measures the state of the tracking-protection enabled\npreference.\n", + "mode": "NULLABLE", + "name": "tracking_protection_enabled", + "type": "BOOL" + }, + { + "description": "Records if the user has shake to summarize option enabled\n", + "mode": "NULLABLE", + "name": "user_ai_summarize_shake_gesture_enabled", + "type": "BOOL" + }, + { + "description": "Records if the user has summarization enabled.\n", + "mode": "NULLABLE", + "name": "user_ai_summarize_summarization_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a user disables Block Images\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_block_images_disabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user enables Block Images\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_block_images_enabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Customize Homepage\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_customize_homepage", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Help in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_help", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Home in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_home", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps in the menu toolbar\non the homepage\n", + "mode": "NULLABLE", + "name": "app_menu_homepage_menu", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Logins & Passwords\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_logins", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Disable Night Mode\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_night_mode_disabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Enable Night Mode\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_night_mode_enabled", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Settings in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_settings", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Sign Into Sync\nin the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_sign_into_sync", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps in the menu toolbar\nfrom a website\n", + "mode": "NULLABLE", + "name": "app_menu_site_menu", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps What's New in the app menu\n", + "mode": "NULLABLE", + "name": "app_menu_whats_new", + "type": "INT64" + }, + { + "description": "Counts the number of times the app is opened from an external\nlink, implying the client has Firefox set as a default browser.\n\nCurrently this is our most accurate way of measuring how\noften Firefox is set as the default browser.\n", + "mode": "NULLABLE", + "name": "app_opened_as_default_browser", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been deleted by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been modified by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_modified", + "type": "INT64" + }, + { + "description": "A counter of the number of credit cards that have been saved by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_saved", + "type": "INT64" + }, + { + "description": "Counts the number of times default browser card is dismissed.\n", + "mode": "NULLABLE", + "name": "default_browser_card_dismiss_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times the Go To Settings button on\ndefault browser card is clicked.\n", + "mode": "NULLABLE", + "name": "default_browser_card_go_to_settings_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times default browser onboarding is dismissed.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_dismiss_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times the Go To Settings button on\ndefault browser onboarding is clicked.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_go_to_settings_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open the\nsettings menu to customize the Firefox Homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_customize_homepage_button", + "type": "INT64" + }, + { + "description": "The number of times a user sees the Firefox Homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_firefox_homepage_view", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the History Highlights section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_history_highlights_item_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the History section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_history_highlights_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting group from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_group_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the Jump Back In section.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_tab_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user sees a Jump Back In tile\nin the Jump Back In section on the homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_jump_back_in_tile_view", + "type": "INT64" + }, + { + "description": "Counts when a user opens Firefox Home\nfrom awesomebar.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_open_from_awesomebar", + "type": "INT64" + }, + { + "description": "Counts when user opens Firefox Home from\nbottom right hamburger menu Home button\nand New Tab button.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_open_from_menu_home_button", + "type": "INT64" + }, + { + "description": "Counts the number of times a bookmarked item in\nthe Recently Saved section is tapped\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_bookmark_item", + "type": "INT64" + }, + { + "description": "Counts the number of times a reading list\nitem in the Recently Saved section is tapped.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_reading_item", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the Show All\nbutton of the Recently Saved Section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_recently_saved_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps to open a\nsynced tab from the Jump Back In section\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_opened", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps the\nShow All button of Synced Tab in the Jump Back In section.\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_show_all", + "type": "INT64" + }, + { + "description": "Counts the number of times a user sees the\nSynced Tab tile on the homepage\n", + "mode": "NULLABLE", + "name": "firefox_home_page_synced_tab_tile_view", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Counts the number of times a user has selected a\nsearch term group inside the history panel. Selecting\nthis item will navigate them to a view containing a list\nof all Site items that appear in that group.\n", + "mode": "NULLABLE", + "name": "history_group_list", + "type": "INT64" + }, + { + "description": "Recorded when a user is shown inactive tab view\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tab_shown", + "type": "INT64" + }, + { + "description": "Recorded when a user swipes to close an inactive tab\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tab_swipe_close", + "type": "INT64" + }, + { + "description": "Recorded when a user taps on close all inactive tabs button\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_inactive_tabs_close_all_btn", + "type": "INT64" + }, + { + "description": "Recorded when a user taps on an inactive tab\n", + "mode": "NULLABLE", + "name": "inactive_tabs_tray_open_inactive_tab", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been deleted by the user.\n", + "mode": "NULLABLE", + "name": "logins_deleted", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been modified by the user.\n", + "mode": "NULLABLE", + "name": "logins_modified", + "type": "INT64" + }, + { + "description": "A counter of the number of passwords that have been saved by the user.\n", + "mode": "NULLABLE", + "name": "logins_saved", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted locally due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_local_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "Track how many logins we deleted in the mirror table due to various reasons that prevent us from decrypting the login\n", + "mode": "NULLABLE", + "name": "logins_store_mirror_undecryptable_deleted", + "type": "INT64" + }, + { + "description": "The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_read_query_count", + "type": "INT64" + }, + { + "description": "The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store.\n", + "mode": "NULLABLE", + "name": "logins_store_write_query_count", + "type": "INT64" + }, + { + "description": "Counts the number of times a user runs the\nsd web image library cache cleanup\n", + "mode": "NULLABLE", + "name": "migration_image_sd_cache_cleanup", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Copy Address\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_copy_address", + "type": "INT64" + }, + { + "description": "Counts the number of times a user creates a new tab from the\npage action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_create_new_tab", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Find in Page\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_find_in_page", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Pin to Top Sites\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_pin_to_top_sites", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Pin to Top Sites\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_remove_pinned_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Report Site Issue\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_report_site_issue", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Request Desktop Site\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_request_desktop_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Request Mobile Site\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_request_mobile_site", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Send to Device\nin the page action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_send_to_device", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps Share Page With in the\npage action menu\n", + "mode": "NULLABLE", + "name": "page_action_menu_share_page_with", + "type": "INT64" + }, + { + "description": "Counts the number of times a user navigates to the downloads panel\nfrom the page action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_view_downloads_panel", + "type": "INT64" + }, + { + "description": "Counts the number of times a user navigates to the history panel\nfrom the page action menu.\n", + "mode": "NULLABLE", + "name": "page_action_menu_view_history_panel", + "type": "INT64" + }, + { + "description": "The \"use password button\" of the password generator bottom sheet was clicked.\n", + "mode": "NULLABLE", + "name": "password_generator_filled", + "type": "INT64" + }, + { + "description": "The password generator bottom sheet was shown and is visible\n", + "mode": "NULLABLE", + "name": "password_generator_shown", + "type": "INT64" + }, + { + "description": "Counts when a user gets to pocket section\non Firefox Home\n", + "mode": "NULLABLE", + "name": "pocket_section_impressions", + "type": "INT64" + }, + { + "description": "Counts the number of times a QR code is scanned.\n", + "mode": "NULLABLE", + "name": "qr_code_scanned", + "type": "INT64" + }, + { + "description": "Counts how many times the reader mode is closed.\n", + "mode": "NULLABLE", + "name": "reader_mode_close", + "type": "INT64" + }, + { + "description": "Counts how many times the reader mode is opened.\n", + "mode": "NULLABLE", + "name": "reader_mode_open", + "type": "INT64" + }, + { + "description": "Counts the number of times an item is opened from the\nReading List\n", + "mode": "NULLABLE", + "name": "reading_list_open", + "type": "INT64" + }, + { + "description": "Counts the number of times the start search button is\npressed\n", + "mode": "NULLABLE", + "name": "search_start_search_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times setting as default\nbrowser menu option is tapped.\n", + "mode": "NULLABLE", + "name": "settings_menu_set_as_default_browser_pressed", + "type": "INT64" + }, + { + "description": "A count of the number of eligible product pages the user has visited.\n", + "mode": "NULLABLE", + "name": "shopping_product_page_visits", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps\non create account button in sync library view\n", + "mode": "NULLABLE", + "name": "sync_create_account_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times a user opens\nsynced tab\n", + "mode": "NULLABLE", + "name": "sync_open_tab", + "type": "INT64" + }, + { + "description": "Counts the number of times a user taps\non sign in to sync button in sync\nlibrary view\n", + "mode": "NULLABLE", + "name": "sync_sign_in_sync_pressed", + "type": "INT64" + }, + { + "description": "Measures the current open tab count as the application\ngoes to background. Each background event adds to this\nmetric, making it the cumulative sum of all open tabs\nwhen the app goes to background during the period of\ntime covered by a single metrics ping. This can be\ndivided by the number of baseline pings with\n`ping_info.reason=\"inactive\"` from the `start_time` to\nthe `end_time` of the metrics ping to determine the\naverage open tabs per foreground \"session\".\n", + "mode": "NULLABLE", + "name": "tabs_cumulative_count", + "type": "INT64" + }, + { + "description": "Recorded when a user closes the tab in a group\n", + "mode": "NULLABLE", + "name": "tabs_grouped_tab_closed", + "type": "INT64" + }, + { + "description": "This counts the number of times a user has tapped the search\nicon for grouped tabs in the tab tray.\n", + "mode": "NULLABLE", + "name": "tabs_grouped_tab_search", + "type": "INT64" + }, + { + "description": "This counts the number of times a user navigates back in tab\nhistory by swiping from the left edge of the device to the right.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_back_swipe", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the back\nbutton on a tab's toolbar.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_history_back", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the forward\nbutton on a tab's toolbar.\n", + "mode": "NULLABLE", + "name": "tabs_navigate_tab_history_forward", + "type": "INT64" + }, + { + "description": "Counts the number of times the add new tab button is\npressed\n", + "mode": "NULLABLE", + "name": "tabs_new_tab_pressed", + "type": "INT64" + }, + { + "description": "Record the number of URI's visited by the user.\n", + "mode": "NULLABLE", + "name": "tabs_normal_and_private_uri_count", + "type": "INT64" + }, + { + "description": "Record event when user has executed pull to refresh.\n", + "mode": "NULLABLE", + "name": "tabs_pull_to_refresh", + "type": "INT64" + }, + { + "description": "This counts the number of times a user taps the reload\nbutton in the URL bar.\n", + "mode": "NULLABLE", + "name": "tabs_reload_from_url_bar", + "type": "INT64" + }, + { + "description": "Records the number of times a user clicks to dismiss (does not include tapping accept or remind me later).\n", + "mode": "NULLABLE", + "name": "termsofuse_dismiss_count", + "type": "INT64" + }, + { + "description": "Records the number of ToU impressions the user has had.\n", + "mode": "NULLABLE", + "name": "termsofuse_impression_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user clicks \"remind me later\".\n", + "mode": "NULLABLE", + "name": "termsofuse_remind_me_later_count", + "type": "INT64" + }, + { + "description": "Track how many undecryptable credit cards we scrub during the credit card verification process\n", + "mode": "NULLABLE", + "name": "user_credit_cards_undecryptable_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user taps to dismiss (does not include tapping accept or remind me later).\n\n**Developer Note**: This replaces the old `termsofuse.dismiss_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_dismissed_count", + "type": "INT64" + }, + { + "description": "Records the number of times a user taps \"remind me later\".\n\n**Developer Note**: This replaces the old `termsofuse.remind_me_later_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_remind_me_later_count", + "type": "INT64" + }, + { + "description": "Records the number of ToU impressions the user has had.\n\n**Developer Note**: This replaces the old `termsofuse.impression_count` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_shown_count", + "type": "INT64" + }, + { + "description": "Counts how many times the large tabs widget opens url\n", + "mode": "NULLABLE", + "name": "widget_l_tabs_open_url", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget closes private tabs\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_close_private", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens copied links\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_copied_link", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens firefox for private search\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_private_search", + "type": "INT64" + }, + { + "description": "Counts how many times medium quick action\nwidget opens firefox for regular search\n", + "mode": "NULLABLE", + "name": "widget_m_quick_action_search", + "type": "INT64" + }, + { + "description": "Counts how many times the medium tabs widget opens url\n", + "mode": "NULLABLE", + "name": "widget_m_tabs_open_url", + "type": "INT64" + }, + { + "description": "Counts how many times user opens top site tabs\n", + "mode": "NULLABLE", + "name": "widget_m_top_sites_widget", + "type": "INT64" + }, + { + "description": "Counts how many times small quick action\nwidget opens firefox for regular search\n", + "mode": "NULLABLE", + "name": "widget_s_quick_action_search", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The date of when the app was last opened as default browser.\n", + "mode": "NULLABLE", + "name": "app_last_opened_as_default_browser", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n", + "mode": "NULLABLE", + "name": "termsofuse_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n\n**Developer Note**: This replaces the old `termsofuse.date` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_date_accepted", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a bookmark is added from the\nfollowing:\n* Page Action Menu\n* Share Menu\n* Activity stream\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_add", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is deleted from\nthe following:\n* Page Action Menu\n* Activity Stream\n* Bookmarks Panel\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_delete", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is tapped to\nbe edited from:\n* Add bookmark toast Edit button\n* Bookmarks panel edit bookmarks view\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmark is opened from\nthe following:\n* Awesomebar results\n* Bookmarks Panel\n* Top sites\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_open", + "type": "RECORD" + }, + { + "description": "Counts the number of times the bookmarks list is opened\nfrom either the Home Panel tab button or the App Menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bookmarks_view_list", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is ``.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is ``.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "The number of times a user sees the Firefox Homepage,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_firefox_homepage_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting group from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_group_open_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the\nShow All button in the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open an\nexisting tab from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_jump_back_in_tab_opened_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a bookmarked item in\nthe Recently Saved section is tapped,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_bookmark_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a reading list\nitem in the Recently Saved section is tapped,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_read_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the Show All\nbutton of the Recently Saved Section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_recently_saved_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps to open a\nsynced tab from the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_synced_tab_opened_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user taps the\nShow All button of Synced Tab in the Jump Back In section,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "firefox_home_page_synced_tab_show_all_origin", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "Counts the number of times a user selected an item from\nthe history panel. This labeled counter will tell apart\nitems that appear inside a group, and those that do not.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "history_selected_item", + "type": "RECORD" + }, + { + "description": "Records when a section has been viewed on the homepage. See `homepage.viewed` for more details on what is considered a homepage view. This event refers to a section that has been scrolled to or seen on an homepage that has been viewed. The labels matches the values in `HomepageTelemetry.ItemType` under `sectionName`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "homepage_section_viewed", + "type": "RECORD" + }, + { + "description": "Counts the number of times user toggle (expand or collapse)\ninactive tab section.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "inactive_tabs_tray_toggle_inactive_tab_tray", + "type": "RECORD" + }, + { + "description": "Counts the number of times a specific library panel\nbutton is tapped for Bookmarks, History, Reading List,\nDownloads and Synced tabs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "library_panel_pressed", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_read_query_error_count", + "type": "RECORD" + }, + { + "description": "The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "logins_store_write_query_error_count", + "type": "RECORD" + }, + { + "description": "Records when a user opens Pocket article from\nFirefox Home Pocket feed, with a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pocket_open_story_origin", + "type": "RECORD" + }, + { + "description": "Counts when a user opens Pocket article from\nFirefox Home Pocket feed.\nThe label is position of tile i.e. 0,1,2...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pocket_open_story_position", + "type": "RECORD" + }, + { + "description": "Counts the number of times an item is added to the reading\nlist from the following:\n* Reader Mode Toolbar\n* Share Extension\n* Page Action Menu\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "reading_list_add", + "type": "RECORD" + }, + { + "description": "Counts the number of times an item is added to the\nreading list from the following:\n* Reader Mode Toolbar\n* Reading List Panel\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "reading_list_delete", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `{search-engine-name}.{source}`\n\nIf the search engine is bundled with Firefox-iOS, then\n`search-engine-name` will be the name of the search engine. If\nit is a custom search engine, the value will be `custom`.\n\nThe value of `source` will reflect the source from which the\nsearch started. One of:\n* quicksearch\n* suggestion\n* actionbar\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_counts", + "type": "RECORD" + }, + { + "description": "Counts the number of times the google top site button\nis pressed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_google_topsite_pressed", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_in_content", + "type": "RECORD" + }, + { + "description": "The count of tabs closed by the user. Increments the\nappropriate label when either a normal or private tab\nis closed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_close", + "type": "RECORD" + }, + { + "description": "The count of times the user closes all tabs. Increments the\nappropriate label when either a normal or private tab\nis closed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_close_all", + "type": "RECORD" + }, + { + "description": "The count of tabs opened by the user. Increments the\nappropriate label when either a normal or private tab\nis opened.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_open", + "type": "RECORD" + }, + { + "description": "Records an event when user taps on top site tile,\nwith a home page origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "top_sites_pressed_tile_origin", + "type": "RECORD" + }, + { + "description": "Recorded when the user enters the background. This reports\nthe currently selected wallpaper if it's not the default.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "wallpaper_analytics_themed_wallpaper", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "The Nimbus context object that is recorded to Glean\n", + "mode": "NULLABLE", + "name": "nimbus_system_recorded_nimbus_context", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter of the number of all addresses that are currently saved by the user.\n", + "mode": "NULLABLE", + "name": "addresses_saved_all", + "type": "INT64" + }, + { + "description": "A quantity that indicates how many bookmarks a user\nhas in the mobile folder.\n", + "mode": "NULLABLE", + "name": "bookmarks_mobile_bookmarks_count", + "type": "INT64" + }, + { + "description": "Record the number of ALL the credit cards that have been currently stored by the user.\n", + "mode": "NULLABLE", + "name": "credit_card_saved_all", + "type": "INT64" + }, + { + "description": "The number of visits in a User's history database\n", + "mode": "NULLABLE", + "name": "history_num_visits", + "type": "INT64" + }, + { + "description": "Record the number of ALL the passwords that have been currently stored by the user.\n", + "mode": "NULLABLE", + "name": "logins_saved_all", + "type": "INT64" + }, + { + "description": "The number of visits migrated to the places.db\n", + "mode": "NULLABLE", + "name": "places_history_migration_num_migrated", + "type": "INT64" + }, + { + "description": "The number of visits expected to migrate to the places.db\n", + "mode": "NULLABLE", + "name": "places_history_migration_num_to_migrate", + "type": "INT64" + }, + { + "description": "A quantity that indicates how many INACTIVE tabs a user\ncurrently has open. This is reported when the user backgrounds\nthe app.\n", + "mode": "NULLABLE", + "name": "tabs_inactive_tabs_count", + "type": "INT64" + }, + { + "description": "A snapshot of how many normal tabs a user has opened when he\ncloses the application.\n", + "mode": "NULLABLE", + "name": "tabs_normal_tabs_quantity", + "type": "INT64" + }, + { + "description": "A snapshot of how many private tabs a user has opened when he\ncloses the application.\n", + "mode": "NULLABLE", + "name": "tabs_private_tabs_quantity", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n", + "mode": "NULLABLE", + "name": "termsofuse_version", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n\n**Developer Note**: This replaces the old `termsofuse.version` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_version_accepted", + "type": "INT64" + }, + { + "description": "A snapshot of how many windows the user has opened on iPad.\n", + "mode": "NULLABLE", + "name": "windows_ipad_window_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A Rate of how often migrations end\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_migration_ended_rate", + "type": "RECORD" + }, + { + "description": "A Rate of how often migrations error out\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_migration_error_rate", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A string containing the Adjust ad group ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_ad_group", + "type": "STRING" + }, + { + "description": "A string containing the Adjust campaign ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_campaign", + "type": "STRING" + }, + { + "description": "A string containing the Adjust creative ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_creative", + "type": "STRING" + }, + { + "description": "A string containing the Adjust network ID from which the user installed\nFirefox-iOS.\n", + "mode": "NULLABLE", + "name": "adjust_network", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "The setting a user chooses as their Home page. By default,\nit is initially set to Firefox Home.\n", + "mode": "NULLABLE", + "name": "preferences_home_page_setting", + "type": "STRING" + }, + { + "description": "The name of the view that the user wants to see on new tabs.\nFor example History, Homepage or Blank. It is used to measure\nusage of this feature, to see how effective feature promotion\ncampaigns are and to establish a baseline number for when we\nintroduce the new Activity Stream features.\n", + "mode": "NULLABLE", + "name": "preferences_new_tab_experience", + "type": "STRING" + }, + { + "description": "What opening screen preference the user has selected under\n\"Customize Home\". \"homepage,\" \"last tab,\" or\n\"homepage after 4 hours\" default: \"homepage after 4 hours\".\n", + "mode": "NULLABLE", + "name": "preferences_opening_screen", + "type": "STRING" + }, + { + "description": "The default search engine identifier if the search engine is\npre-loaded with Firefox-iOS. If it's a custom search engine,\nthen the value will be 'custom'.\n", + "mode": "NULLABLE", + "name": "search_default_engine", + "type": "STRING" + }, + { + "description": "A string representing the selected strength of the\ntracking-protection that is enabled. One of:\n* basic\n* strict\n", + "mode": "NULLABLE", + "name": "tracking_protection_strength", + "type": "STRING" + }, + { + "description": "Records the user's preference for the middle button (newTab or home).\n", + "mode": "NULLABLE", + "name": "user_toolbar_middle_button_type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the total time for generating the summary and showing it to the user.\nStarts when the user triggers summarization.\nEnds when user sees the result or an error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ai_summarize_summarization_time", + "type": "RECORD" + }, + { + "description": "The time a query against awesomebar took. This helps us understand the performance of the awesomebar in querying history and bookmarks. The query time will also help us verify that we are **not** introducing any performance regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "awesomebar_query_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "A time distribution of how long it took for the migration to occur\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "places_history_migration_duration", + "type": "RECORD" + }, + { + "description": "Track the startup time of the application when the app was launched to open a url.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "share_deeplink_open_url_startup_time", + "type": "RECORD" + }, + { + "description": "Counts how long it takes to switch to another tab\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tabs_tab_switch", + "type": "RECORD" + }, + { + "description": "Counts how long each page takes to load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webview_page_load", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client id from legacy telemetry.\n", + "mode": "NULLABLE", + "name": "legacy_ids_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxbeta/metrics/metrics.2.schema.json b/schemas/org-mozilla-ios-firefoxbeta/metrics/metrics.2.schema.json new file mode 100644 index 000000000..ee5425e34 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxbeta/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxbeta", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxbeta/usage-reporting/usage-reporting.2.bq b/schemas/org-mozilla-ios-firefoxbeta/usage-reporting/usage-reporting.2.bq new file mode 100644 index 000000000..66005a004 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxbeta/usage-reporting/usage-reporting.2.bq @@ -0,0 +1,522 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Was the app installed using MDM software.\n", + "mode": "NULLABLE", + "name": "usage_is_managed_device", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The timestamp when the user accepted the Terms of Use.\n", + "mode": "NULLABLE", + "name": "termsofuse_date", + "type": "STRING" + }, + { + "description": "The date of the first run of the application.\n", + "mode": "NULLABLE", + "name": "usage_first_run_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n\n**Developer Note**: This replaces the old `termsofuse.date` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_date_accepted", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The version of the Terms of Use the user accepted.\n", + "mode": "NULLABLE", + "name": "termsofuse_version", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n\n**Developer Note**: This replaces the old `termsofuse.version` metric.\n", + "mode": "NULLABLE", + "name": "user_terms_of_use_version_accepted", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\").\nIf the value was not provided through configuration,\nthis metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.\n", + "mode": "NULLABLE", + "name": "usage_app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\").\nIf the value was not provided through configuration,\nthis metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_app_display_version", + "type": "STRING" + }, + { + "description": "The name of the operating system.\nPossible values:\nAndroid, iOS, Linux, Darwin, Windows,\nFreeBSD, NetBSD, OpenBSD, Solaris, Unknown\n", + "mode": "NULLABLE", + "name": "usage_os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\").\nIf the version detection fails, this metric gets set to `Unknown`.\n", + "mode": "NULLABLE", + "name": "usage_os_version", + "type": "STRING" + }, + { + "description": "The optional reason the ping was submitted.\nThe specific values for reason are specific to each ping, and are\ndocumented in the ping's pings.yaml file.\n", + "mode": "NULLABLE", + "name": "usage_reason", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The duration of the last foreground session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "usage_duration", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The duration of the last foreground session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "usage_duration", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A UUID uniquely identifying the profile,\nnot shared with other telemetry data.\n", + "mode": "NULLABLE", + "name": "usage_profile_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxbeta/usage-reporting/usage-reporting.2.schema.json b/schemas/org-mozilla-ios-firefoxbeta/usage-reporting/usage-reporting.2.schema.json new file mode 100644 index 000000000..247c6cec0 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxbeta/usage-reporting/usage-reporting.2.schema.json @@ -0,0 +1,589 @@ +{ + "$id":"moz://mozilla.org/schemas/glean-min/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean min ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxbeta", + "bq_metadata_format":"structured", + "bq_table":"usage_reporting_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":false, + "include_info_sections":false + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + } + }, + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn-network-extension/daemonsession/daemonsession.2.bq b/schemas/org-mozilla-ios-firefoxvpn-network-extension/daemonsession/daemonsession.2.bq new file mode 100644 index 000000000..6ee17d5f7 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn-network-extension/daemonsession/daemonsession.2.bq @@ -0,0 +1,874 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if the VPN server's country is the same as the user's actual country.\nWhen using multihop, the exit server is used.", + "mode": "NULLABLE", + "name": "session_server_in_same_country", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count of times that the connection health check results\nin no signal.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_no_signal_count", + "type": "INT64" + }, + { + "description": "(iOS only) Count of times that the connection health check is in pending.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_pending_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_stable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check results\nin unstable.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_unstable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\nCollected only on mobile apps.\n", + "mode": "NULLABLE", + "name": "session_connection_health_stable_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of data received through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_rx", + "type": "RECORD" + }, + { + "description": "The amount of data sent through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_tx", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "(Mobile-only) The time the user ends a VPN session from the daemon or\nnetwork extension\n", + "mode": "NULLABLE", + "name": "session_daemon_session_end", + "type": "STRING" + }, + { + "description": "(Mobile-only) The time the user starts a VPN session from the daemon or\nnetwork extension\n", + "mode": "NULLABLE", + "name": "session_daemon_session_start", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "(Mobile-only) Where the VPN session started from, to determine how many\nsessions start outside the app. Values should be \"app\" or \"system\".\n\"system\" covers cases like system settings, autostart on boot, tile, etc.\n", + "mode": "NULLABLE", + "name": "session_daemon_session_source", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent in no signal state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_no_signal_time", + "type": "RECORD" + }, + { + "description": "(iOS only) Time spent in pending state.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_pending_time", + "type": "RECORD" + }, + { + "description": "Time spent in stable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_stable_time", + "type": "RECORD" + }, + { + "description": "Time spent in unstable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_unstable_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "(Mobile-only) A unique identifier for each session.\nThis is used to connect unique VPN sessions across pings, and as a safety\ncheck on edge cases of VPN activation/deactivation, such as a session\nbeing started/ended from mobile system settings.\n", + "mode": "NULLABLE", + "name": "session_daemon_session_id", + "type": "STRING" + }, + { + "description": "A unique identifier to connect the app and daemon Glean instances.\n", + "mode": "NULLABLE", + "name": "session_installation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn-network-extension/daemonsession/daemonsession.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn-network-extension/daemonsession/daemonsession.2.schema.json new file mode 100644 index 000000000..7a9d82b65 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn-network-extension/daemonsession/daemonsession.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn_network_extension", + "bq_metadata_format":"structured", + "bq_table":"daemonsession_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn-network-extension/health/health.2.bq b/schemas/org-mozilla-ios-firefoxvpn-network-extension/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn-network-extension/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn-network-extension/health/health.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn-network-extension/health/health.2.schema.json new file mode 100644 index 000000000..2b7399485 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn-network-extension/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn_network_extension", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn-network-extension/metrics/metrics.2.bq b/schemas/org-mozilla-ios-firefoxvpn-network-extension/metrics/metrics.2.bq new file mode 100644 index 000000000..e77b3f09a --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn-network-extension/metrics/metrics.2.bq @@ -0,0 +1,980 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "The time the app took between starting and rendering the main screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_main_screen", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn-network-extension/metrics/metrics.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn-network-extension/metrics/metrics.2.schema.json new file mode 100644 index 000000000..fa58c2ca7 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn-network-extension/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn_network_extension", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn-network-extension/vpnsession/vpnsession.2.bq b/schemas/org-mozilla-ios-firefoxvpn-network-extension/vpnsession/vpnsession.2.bq new file mode 100644 index 000000000..e7012dfe9 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn-network-extension/vpnsession/vpnsession.2.bq @@ -0,0 +1,851 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if the VPN server's country is the same as the user's actual country.\nWhen using multihop, the exit server is used.", + "mode": "NULLABLE", + "name": "session_server_in_same_country", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count of times that the connection health check results\nin no signal.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_no_signal_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_stable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check results\nin unstable.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_unstable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\nCollected only on mobile apps.\n", + "mode": "NULLABLE", + "name": "session_connection_health_stable_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of data received through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_rx", + "type": "RECORD" + }, + { + "description": "The amount of data sent through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_tx", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time the user ends a VPN session from the app\n", + "mode": "NULLABLE", + "name": "session_session_end", + "type": "STRING" + }, + { + "description": "The time the user starts a VPN session from the app\n", + "mode": "NULLABLE", + "name": "session_session_start", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of apps the user is excluding from the VPN tunnel\n", + "mode": "NULLABLE", + "name": "session_apps_excluded", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The type of DNS a user has active:\n- NoCustomDNSAvailable: Custom DNS app feature isn't available\n- Default: App's default DNS server\n- Custom: User has provided a custom valid IP address for their DNS\n- BlockAds: One of app's privacy DNS options\n- BlockTrackers: One of app's privacy DNS options\n- BlockAdsAndTrackers: One of app's privacy DNS options\n- BlockMalware: One of app's privacy DNS options\n- BlockMalwareAndAds: One of app's privacy DNS options\n- BlockMalwareAndTrackers: One of app's privacy DNS options\n- BlockMalwareAndAdsAndTrackers: One of app's privacy DNS options\n", + "mode": "NULLABLE", + "name": "session_dns_type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent in no signal state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_no_signal_time", + "type": "RECORD" + }, + { + "description": "Time spent in stable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_stable_time", + "type": "RECORD" + }, + { + "description": "Time spent in unstable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_unstable_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A unique identifier to connect the app and daemon Glean instances.\n", + "mode": "NULLABLE", + "name": "session_installation_id", + "type": "STRING" + }, + { + "description": "A unique identifier for each session. This is used to connect unique VPN\nsessions across pings, and as a safety check on edge cases of VPN\nactivation/deactivation, such as a session being started/ended from mobile\nsystem settings.\n", + "mode": "NULLABLE", + "name": "session_session_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn-network-extension/vpnsession/vpnsession.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn-network-extension/vpnsession/vpnsession.2.schema.json new file mode 100644 index 000000000..bdec9784b --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn-network-extension/vpnsession/vpnsession.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn_network_extension", + "bq_metadata_format":"structured", + "bq_table":"vpnsession_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn/daemonsession/daemonsession.2.bq b/schemas/org-mozilla-ios-firefoxvpn/daemonsession/daemonsession.2.bq new file mode 100644 index 000000000..6ee17d5f7 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/daemonsession/daemonsession.2.bq @@ -0,0 +1,874 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if the VPN server's country is the same as the user's actual country.\nWhen using multihop, the exit server is used.", + "mode": "NULLABLE", + "name": "session_server_in_same_country", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count of times that the connection health check results\nin no signal.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_no_signal_count", + "type": "INT64" + }, + { + "description": "(iOS only) Count of times that the connection health check is in pending.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_pending_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_stable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check results\nin unstable.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_unstable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\nCollected only on mobile apps.\n", + "mode": "NULLABLE", + "name": "session_connection_health_stable_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of data received through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_rx", + "type": "RECORD" + }, + { + "description": "The amount of data sent through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_tx", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "(Mobile-only) The time the user ends a VPN session from the daemon or\nnetwork extension\n", + "mode": "NULLABLE", + "name": "session_daemon_session_end", + "type": "STRING" + }, + { + "description": "(Mobile-only) The time the user starts a VPN session from the daemon or\nnetwork extension\n", + "mode": "NULLABLE", + "name": "session_daemon_session_start", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "(Mobile-only) Where the VPN session started from, to determine how many\nsessions start outside the app. Values should be \"app\" or \"system\".\n\"system\" covers cases like system settings, autostart on boot, tile, etc.\n", + "mode": "NULLABLE", + "name": "session_daemon_session_source", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent in no signal state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_no_signal_time", + "type": "RECORD" + }, + { + "description": "(iOS only) Time spent in pending state.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_pending_time", + "type": "RECORD" + }, + { + "description": "Time spent in stable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_stable_time", + "type": "RECORD" + }, + { + "description": "Time spent in unstable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_unstable_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "(Mobile-only) A unique identifier for each session.\nThis is used to connect unique VPN sessions across pings, and as a safety\ncheck on edge cases of VPN activation/deactivation, such as a session\nbeing started/ended from mobile system settings.\n", + "mode": "NULLABLE", + "name": "session_daemon_session_id", + "type": "STRING" + }, + { + "description": "A unique identifier to connect the app and daemon Glean instances.\n", + "mode": "NULLABLE", + "name": "session_installation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn/daemonsession/daemonsession.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn/daemonsession/daemonsession.2.schema.json new file mode 100644 index 000000000..3615adf65 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/daemonsession/daemonsession.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn", + "bq_metadata_format":"structured", + "bq_table":"daemonsession_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn/health/health.2.bq b/schemas/org-mozilla-ios-firefoxvpn/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn/health/health.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn/health/health.2.schema.json new file mode 100644 index 000000000..f5402a660 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn/main/main.2.bq b/schemas/org-mozilla-ios-firefoxvpn/main/main.2.bq new file mode 100644 index 000000000..7d0c2e8a9 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/main/main.2.bq @@ -0,0 +1,654 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The status of whether the VPN is activated on device start\n", + "mode": "NULLABLE", + "name": "settings_connect_on_startup_active", + "type": "BOOL" + }, + { + "description": "True if the client is set to use the system theme, false if not.\n", + "mode": "NULLABLE", + "name": "settings_is_using_system_theme", + "type": "BOOL" + }, + { + "description": "True if the client is displaying dark mode, false if it's displaying\nlight mode. This is recorded whether the mode was manually selected by\nthe user or whether it was used because \"use system theme\" was true.\n", + "mode": "NULLABLE", + "name": "settings_using_dark_mode", + "type": "BOOL" + }, + { + "description": "Status of whether app is being used in language of the operating system\n", + "mode": "NULLABLE", + "name": "settings_using_system_language", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time the app took between starting and rendering the main screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_main_screen", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn/main/main.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn/main/main.2.schema.json new file mode 100644 index 000000000..387bd7991 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/main/main.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn", + "bq_metadata_format":"structured", + "bq_table":"main_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn/metrics/metrics.2.bq b/schemas/org-mozilla-ios-firefoxvpn/metrics/metrics.2.bq new file mode 100644 index 000000000..3f1e41608 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/metrics/metrics.2.bq @@ -0,0 +1,999 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The status of whether the VPN is activated on device start\n", + "mode": "NULLABLE", + "name": "settings_connect_on_startup_active", + "type": "BOOL" + }, + { + "description": "Status of whether app is being used in language of the operating system\n", + "mode": "NULLABLE", + "name": "settings_using_system_language", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "The time the app took between starting and rendering the main screen.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_main_screen", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn/metrics/metrics.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn/metrics/metrics.2.schema.json new file mode 100644 index 000000000..58d5de728 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-firefoxvpn/vpnsession/vpnsession.2.bq b/schemas/org-mozilla-ios-firefoxvpn/vpnsession/vpnsession.2.bq new file mode 100644 index 000000000..e7012dfe9 --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/vpnsession/vpnsession.2.bq @@ -0,0 +1,851 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "True if the VPN server's country is the same as the user's actual country.\nWhen using multihop, the exit server is used.", + "mode": "NULLABLE", + "name": "session_server_in_same_country", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Count of times that the connection health check results\nin no signal.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_no_signal_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_stable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check results\nin unstable.\n\nThe health check counters must not be considered as markers of time.\nThere is a possible situation in the health check (which calls the\ntelemetry) which frequently results in more than one count per second.\nThe situation: A health check is conducted because a network check did not\nreturn, and milliseconds later that network check returns and another\nhealth check is started because of the return.\n", + "mode": "NULLABLE", + "name": "connection_health_unstable_count", + "type": "INT64" + }, + { + "description": "Count of times that the connection health check succeeds.\nCollected only on mobile apps.\n", + "mode": "NULLABLE", + "name": "session_connection_health_stable_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of data received through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_rx", + "type": "RECORD" + }, + { + "description": "The amount of data sent through the VPN tunnel.\n\nThis metric is accumulated periodically on a 3hr interval\nwhile the VPN is turned on.\n\nThis metric is not collected on iOS.\n\n> **Note**: This metric is recorded on the vpnsession ping for\n> desktop platforms and on the daemonsession ping for mobile platforms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_data_transferred_tx", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time the user ends a VPN session from the app\n", + "mode": "NULLABLE", + "name": "session_session_end", + "type": "STRING" + }, + { + "description": "The time the user starts a VPN session from the app\n", + "mode": "NULLABLE", + "name": "session_session_start", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of apps the user is excluding from the VPN tunnel\n", + "mode": "NULLABLE", + "name": "session_apps_excluded", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "The type of DNS a user has active:\n- NoCustomDNSAvailable: Custom DNS app feature isn't available\n- Default: App's default DNS server\n- Custom: User has provided a custom valid IP address for their DNS\n- BlockAds: One of app's privacy DNS options\n- BlockTrackers: One of app's privacy DNS options\n- BlockAdsAndTrackers: One of app's privacy DNS options\n- BlockMalware: One of app's privacy DNS options\n- BlockMalwareAndAds: One of app's privacy DNS options\n- BlockMalwareAndTrackers: One of app's privacy DNS options\n- BlockMalwareAndAdsAndTrackers: One of app's privacy DNS options\n", + "mode": "NULLABLE", + "name": "session_dns_type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time spent in no signal state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_no_signal_time", + "type": "RECORD" + }, + { + "description": "Time spent in stable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_stable_time", + "type": "RECORD" + }, + { + "description": "Time spent in unstable state.\n\nOnly collected on desktop for vpnsession, as mobile apps\nfrequently are relaunched during VPN sessions. It is\ncollected in daemonsession for mobile clients.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "connection_health_unstable_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A unique identifier to connect the app and daemon Glean instances.\n", + "mode": "NULLABLE", + "name": "session_installation_id", + "type": "STRING" + }, + { + "description": "A unique identifier for each session. This is used to connect unique VPN\nsessions across pings, and as a safety check on edge cases of VPN\nactivation/deactivation, such as a session being started/ended from mobile\nsystem settings.\n", + "mode": "NULLABLE", + "name": "session_session_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-firefoxvpn/vpnsession/vpnsession.2.schema.json b/schemas/org-mozilla-ios-firefoxvpn/vpnsession/vpnsession.2.schema.json new file mode 100644 index 000000000..740926dfa --- /dev/null +++ b/schemas/org-mozilla-ios-firefoxvpn/vpnsession/vpnsession.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_firefoxvpn", + "bq_metadata_format":"structured", + "bq_table":"vpnsession_v1", + "expiration_policy":{ + "delete_after_days":180 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-focus/health/health.2.bq b/schemas/org-mozilla-ios-focus/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-ios-focus/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-focus/health/health.2.schema.json b/schemas/org-mozilla-ios-focus/health/health.2.schema.json new file mode 100644 index 000000000..8426bbbf8 --- /dev/null +++ b/schemas/org-mozilla-ios-focus/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_focus", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":720 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-focus/metrics/metrics.2.bq b/schemas/org-mozilla-ios-focus/metrics/metrics.2.bq new file mode 100644 index 000000000..be8109f0e --- /dev/null +++ b/schemas/org-mozilla-ios-focus/metrics/metrics.2.bq @@ -0,0 +1,1326 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "If Firefox is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "mozilla_products_has_firefox_installed", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_advertising_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_analytics_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_content_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_ever_changed_etp", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_social_blocked", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Recorded when a preference is changed and includes the\npreference that changed as well as the value changed to\nrecorded in the extra keys.\n", + "mode": "NULLABLE", + "name": "app_opened_as_default_browser", + "type": "INT64" + }, + { + "description": "Counts the number of times pdf view is opened in browser.\n", + "mode": "NULLABLE", + "name": "browser_pdf_viewer_used", + "type": "INT64" + }, + { + "description": "Records count of URIs visited by the user in the current session,\nincluding page reloads.\nIt does not include background page requests and URIs from embedded pages\nbut may be incremented without user interaction by website scripts\nthat programmatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "browser_total_uri_count", + "type": "INT64" + }, + { + "description": "Counts the number of times default browser onboarding is dismissed.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_dismiss_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times the Go To Settings button on\ndefault browser onboarding is clicked.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_go_to_settings_pressed", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has added\na website to the autocomplete list.\n", + "mode": "NULLABLE", + "name": "settings_screen_autocomplete_domain_added", + "type": "INT64" + }, + { + "description": "Counts the number of times setting as default\nbrowser menu option is tapped.\n", + "mode": "NULLABLE", + "name": "settings_screen_set_as_default_browser_pressed", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has added\na website to shortcuts.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_added_counter", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\na website from a shortcut in the home screen.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_opened_counter", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\nthe tracking protection settings panel from the toolbar.\n", + "mode": "NULLABLE", + "name": "tracking_protection_toolbar_shield_clicked", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is ‘’.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\nIf the search engine is bundled with Focus `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n`source` will be: `action`, `suggestion`, `widget`, `shortcut`, `topsite`\n(depending on the source from which the search started). Also added the\n`other` option for the source but it should never enter on this case.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_search_count", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is ‘’.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from shortcuts.\nIt also indicates the screen it was removed from, home or browser.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "shortcuts_shortcut_removed_counter", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of shortcuts the user has on home screen,\n0, 1, 2, 3 or 4 (maximum)\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcuts_on_home_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the name of the keyboard (custom or default) everytime\nthe keyboard appears on the screen.\n", + "mode": "NULLABLE", + "name": "app_keyboard_type", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "A string that indicates the theme. Can be one of \"Light\", \"Dark\", or \"Follow device\". Default is \"Follow device\".\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "The default search engine name if the search engine is\npre-loaded with Focus. If it's a custom search engine,\nthen the value will be 'custom'.\n", + "mode": "NULLABLE", + "name": "search_default_engine", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-focus/metrics/metrics.2.schema.json b/schemas/org-mozilla-ios-focus/metrics/metrics.2.schema.json new file mode 100644 index 000000000..28f0fcea6 --- /dev/null +++ b/schemas/org-mozilla-ios-focus/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_focus", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":720 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-klar/health/health.2.bq b/schemas/org-mozilla-ios-klar/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-ios-klar/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-klar/health/health.2.schema.json b/schemas/org-mozilla-ios-klar/health/health.2.schema.json new file mode 100644 index 000000000..0b4e9aeab --- /dev/null +++ b/schemas/org-mozilla-ios-klar/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_klar", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":720 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-klar/metrics/metrics.2.bq b/schemas/org-mozilla-ios-klar/metrics/metrics.2.bq new file mode 100644 index 000000000..be8109f0e --- /dev/null +++ b/schemas/org-mozilla-ios-klar/metrics/metrics.2.bq @@ -0,0 +1,1326 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "If Firefox is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "mozilla_products_has_firefox_installed", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_advertising_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_analytics_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_content_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_ever_changed_etp", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_social_blocked", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Recorded when a preference is changed and includes the\npreference that changed as well as the value changed to\nrecorded in the extra keys.\n", + "mode": "NULLABLE", + "name": "app_opened_as_default_browser", + "type": "INT64" + }, + { + "description": "Counts the number of times pdf view is opened in browser.\n", + "mode": "NULLABLE", + "name": "browser_pdf_viewer_used", + "type": "INT64" + }, + { + "description": "Records count of URIs visited by the user in the current session,\nincluding page reloads.\nIt does not include background page requests and URIs from embedded pages\nbut may be incremented without user interaction by website scripts\nthat programmatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "browser_total_uri_count", + "type": "INT64" + }, + { + "description": "Counts the number of times default browser onboarding is dismissed.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_dismiss_pressed", + "type": "INT64" + }, + { + "description": "Counts the number of times the Go To Settings button on\ndefault browser onboarding is clicked.\n", + "mode": "NULLABLE", + "name": "default_browser_onboarding_go_to_settings_pressed", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has added\na website to the autocomplete list.\n", + "mode": "NULLABLE", + "name": "settings_screen_autocomplete_domain_added", + "type": "INT64" + }, + { + "description": "Counts the number of times setting as default\nbrowser menu option is tapped.\n", + "mode": "NULLABLE", + "name": "settings_screen_set_as_default_browser_pressed", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has added\na website to shortcuts.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_added_counter", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\na website from a shortcut in the home screen.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_opened_counter", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\nthe tracking protection settings panel from the toolbar.\n", + "mode": "NULLABLE", + "name": "tracking_protection_toolbar_shield_clicked", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is ‘’.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\nIf the search engine is bundled with Focus `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n`source` will be: `action`, `suggestion`, `widget`, `shortcut`, `topsite`\n(depending on the source from which the search started). Also added the\n`other` option for the source but it should never enter on this case.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_search_count", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is ‘’.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from shortcuts.\nIt also indicates the screen it was removed from, home or browser.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "shortcuts_shortcut_removed_counter", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of shortcuts the user has on home screen,\n0, 1, 2, 3 or 4 (maximum)\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcuts_on_home_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the name of the keyboard (custom or default) everytime\nthe keyboard appears on the screen.\n", + "mode": "NULLABLE", + "name": "app_keyboard_type", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "A string that indicates the theme. Can be one of \"Light\", \"Dark\", or \"Follow device\". Default is \"Follow device\".\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "The default search engine name if the search engine is\npre-loaded with Focus. If it's a custom search engine,\nthen the value will be 'custom'.\n", + "mode": "NULLABLE", + "name": "search_default_engine", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-klar/metrics/metrics.2.schema.json b/schemas/org-mozilla-ios-klar/metrics/metrics.2.schema.json new file mode 100644 index 000000000..06379496a --- /dev/null +++ b/schemas/org-mozilla-ios-klar/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_klar", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":720 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-lockbox/health/health.2.bq b/schemas/org-mozilla-ios-lockbox/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-ios-lockbox/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-lockbox/health/health.2.schema.json b/schemas/org-mozilla-ios-lockbox/health/health.2.schema.json new file mode 100644 index 000000000..48a7cf9b5 --- /dev/null +++ b/schemas/org-mozilla-ios-lockbox/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_lockbox", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-ios-lockbox/metrics/metrics.2.bq b/schemas/org-mozilla-ios-lockbox/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/org-mozilla-ios-lockbox/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-ios-lockbox/metrics/metrics.2.schema.json b/schemas/org-mozilla-ios-lockbox/metrics/metrics.2.schema.json new file mode 100644 index 000000000..e10eaa5e7 --- /dev/null +++ b/schemas/org-mozilla-ios-lockbox/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_ios_lockbox", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-klar/captcha-detection/captcha-detection.2.bq b/schemas/org-mozilla-klar/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/org-mozilla-klar/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-klar/captcha-detection/captcha-detection.2.schema.json b/schemas/org-mozilla-klar/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..628af3071 --- /dev/null +++ b/schemas/org-mozilla-klar/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_klar", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-klar/health/health.2.bq b/schemas/org-mozilla-klar/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/org-mozilla-klar/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-klar/health/health.2.schema.json b/schemas/org-mozilla-klar/health/health.2.schema.json new file mode 100644 index 000000000..34e751ef5 --- /dev/null +++ b/schemas/org-mozilla-klar/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_klar", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-klar/metrics/metrics.2.bq b/schemas/org-mozilla-klar/metrics/metrics.2.bq new file mode 100644 index 000000000..a4096f716 --- /dev/null +++ b/schemas/org-mozilla-klar/metrics/metrics.2.bq @@ -0,0 +1,37234 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "Is Focus the default browser? This is true only if the user\nchanges the default browser through the app settings.\n", + "mode": "NULLABLE", + "name": "browser_is_default", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Whether or not the search widget is installed\n", + "mode": "NULLABLE", + "name": "metrics_search_widget_installed", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ActivityLifecycleCallbacks.onActivityCreated`\nwas unexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_activity_error", + "type": "BOOL" + }, + { + "description": "The `AppStartReasonProvider.ProcessLifecycleObserver.onCreate` was\nunexpectedly called twice. We can use this metric to validate our\nassumptions about how these APIs are called. This probe can be removed\nonce we validate these assumptions.\n", + "mode": "NULLABLE", + "name": "metrics_start_reason_process_error", + "type": "BOOL" + }, + { + "description": "If Fenix is installed on the users's device.\n", + "mode": "NULLABLE", + "name": "mozilla_products_has_fenix_installed", + "type": "BOOL" + }, + { + "description": "Fenix is the default browser on user's device\n", + "mode": "NULLABLE", + "name": "mozilla_products_is_fenix_default_browser", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "True if notifications are allowed from OS settings, otherwise false.\nPrior to Android 13, notifications were allowed by default;\nstarting with Android 13,the user must explicitly grant the permission.\n", + "mode": "NULLABLE", + "name": "notifications_permission_granted", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_advertising_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_analytics_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_content_blocked", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_ever_changed_etp", + "type": "BOOL" + }, + { + "description": "The user has changed the setting for enhanced tracking protection\nat least once.\n", + "mode": "NULLABLE", + "name": "tracking_protection_has_social_blocked", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A counter that indicates how many times a user has added\na website to the autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_domain_added", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from the autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_domain_removed", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has reordered\nthe autocomplete list.\n", + "mode": "NULLABLE", + "name": "autocomplete_list_order_changed", + "type": "INT64" + }, + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has tapped\nthe report site issue from browser menu\n", + "mode": "NULLABLE", + "name": "browser_report_site_issue_counter", + "type": "INT64" + }, + { + "description": "Records count of URIs visited by the user in the current session,\nincluding page reloads.\nIt does not include background page requests and URIs from embedded pages\nbut may be incremented without user interaction by website scripts\nthat programmatically redirect to a new location.\n", + "mode": "NULLABLE", + "name": "browser_total_uri_count", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has added\na website to shortcuts.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_added_counter", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\na website from a shortcut in the home screen.\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcut_opened_counter", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "A counter that indicates how many times a user has opened\nthe tracking protection settings panel from the toolbar.\n", + "mode": "NULLABLE", + "name": "tracking_protection_toolbar_shield_clicked", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "Number of opened tabs when the app has been send to background.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tab_count_app_backgrounded", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_ad_clicks", + "type": "RECORD" + }, + { + "description": "Records the type of interaction a user has on SERP pages.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_in_content", + "type": "RECORD" + }, + { + "description": "The labels for this counter are `.`.\n\nIf the search engine is bundled with Focus `search-engine-name` will be\nthe name of the search engine. If it's a custom search engine (defined:\nhttps://github.com/mozilla-mobile/fenix/issues/1607) the value will be\n`custom`.\n\n`source` will be: `action`, `suggestion`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_search_count", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed.\nThe key format is\n`.in-content.[sap|sap-follow-on|organic].[code|none](.[channel])?`,\nwhere:\n\n* `provider-name` is the name of the provider,\n* `sap|sap-follow-on|organic` is the search access point,\n* `code` is set when the url matches any of the provider's code prefixes,\n* `channel` is set to the url \"channel\" query parameter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_with_ads", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "Indicates how the browser was started. The label is divided into two\nvariables. `state` is how cached the browser is when started. `path` is\nwhat code path we are expected to take. Together, they create a combined\nlabel: `state_path`. For brevity, the specific states are documented in\nthe [Fenix perf\nglossary](https://wiki.mozilla.org/index.php?title=Performance/Fenix/Glossary).\n

\nThis implementation is intended to be simple, not comprehensive. We list\nthe implications below.\n\n

\nThese ways of opening the app undesirably adds events to our primary\nbuckets (non-`unknown` cases):\n
- App switcher cold/warm: `cold/warm_` + duplicates path from\nprevious launch\n
- An Intent is sent internally that's uses `ACTION_MAIN` or\n`ACTION_VIEW` could be: `*_main/view` (unknown if this ever happens)\n
- A command-line launch uses `ACTION_MAIN` or `ACTION_VIEW` could be:\n`*_main/view`\n\n

\nThese ways of opening the app undesirably do not add their events to our\nprimary buckets:\n
- Close and reopen ", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "perf_startup_startup_type", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "A counter that indicates how many times a user has removed\na website from shortcuts.\nIt also indicates the screen it was removed from, home or browser.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "shortcuts_shortcut_removed_counter", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "The number of shortcuts the user has on home screen,\n0, 1, 2, 3 or 4 (maximum)\n", + "mode": "NULLABLE", + "name": "shortcuts_shortcuts_on_home_number", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "A string containing the default search engine name.\n", + "mode": "NULLABLE", + "name": "browser_default_search_engine", + "type": "STRING" + }, + { + "description": "Used to identify the source the app was installed from.", + "mode": "NULLABLE", + "name": "browser_install_source", + "type": "STRING" + }, + { + "description": "The locale that differs from the system locale if a user\nspecifically overrides it for the app.\n", + "mode": "NULLABLE", + "name": "browser_locale_override", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "A string that indicates the theme. Can be one of LIGHT, DARK, or FOLLOW DEVICE. Default is FOLLOW DEVICE.\n", + "mode": "NULLABLE", + "name": "preferences_user_theme", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "Measure how long `applyPendingExperiments` takes.\n`applyPendingExperiments` uses disk I/O, and happens at\nstartup, as part of the initialization sequence.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_apply_pending_experiments_time", + "type": "RECORD" + }, + { + "description": "Measures how long `fetchExperiments` takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "nimbus_health_fetch_experiments_time", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Sets the legacy client ID as part of the deletion-request ping.\n**No longer reported set since Focus 124, where legacy telemetry was removed**.\n", + "mode": "NULLABLE", + "name": "legacy_ids_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-klar/metrics/metrics.2.schema.json b/schemas/org-mozilla-klar/metrics/metrics.2.schema.json new file mode 100644 index 000000000..2f6c03d51 --- /dev/null +++ b/schemas/org-mozilla-klar/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_klar", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":760 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-mozregression/health/health.2.bq b/schemas/org-mozilla-mozregression/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-mozregression/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-mozregression/health/health.2.schema.json b/schemas/org-mozilla-mozregression/health/health.2.schema.json new file mode 100644 index 000000000..859528e14 --- /dev/null +++ b/schemas/org-mozilla-mozregression/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_mozregression", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":1130 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-mozregression/metrics/metrics.2.bq b/schemas/org-mozilla-mozregression/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/org-mozilla-mozregression/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-mozregression/metrics/metrics.2.schema.json b/schemas/org-mozilla-mozregression/metrics/metrics.2.schema.json new file mode 100644 index 000000000..fbe60028f --- /dev/null +++ b/schemas/org-mozilla-mozregression/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_mozregression", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":10000 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-reference-browser/health/health.2.bq b/schemas/org-mozilla-reference-browser/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-reference-browser/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-reference-browser/health/health.2.schema.json b/schemas/org-mozilla-reference-browser/health/health.2.schema.json new file mode 100644 index 000000000..cf79c1128 --- /dev/null +++ b/schemas/org-mozilla-reference-browser/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_reference_browser", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-reference-browser/metrics/metrics.2.bq b/schemas/org-mozilla-reference-browser/metrics/metrics.2.bq new file mode 100644 index 000000000..0a39b6e0d --- /dev/null +++ b/schemas/org-mozilla-reference-browser/metrics/metrics.2.bq @@ -0,0 +1,1060 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of crashes that occur in the application. This measures only the counts of each crash in association with the labeled type of the crash. The labels correspond to the types of crashes handled by lib-crash.\nDeprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_code_crash` replaced by `main_proc_native_code_crash`, `fg_proc_native_code_crash` and `bg_proc_native_code_crash`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "crash_metrics_crash_count", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-reference-browser/metrics/metrics.2.schema.json b/schemas/org-mozilla-reference-browser/metrics/metrics.2.schema.json new file mode 100644 index 000000000..627cdd91e --- /dev/null +++ b/schemas/org-mozilla-reference-browser/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_reference_browser", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-social-nightly/health/health.2.bq b/schemas/org-mozilla-social-nightly/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-social-nightly/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-social-nightly/health/health.2.schema.json b/schemas/org-mozilla-social-nightly/health/health.2.schema.json new file mode 100644 index 000000000..ba2c1649e --- /dev/null +++ b/schemas/org-mozilla-social-nightly/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_social_nightly", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":1130 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-social-nightly/metrics/metrics.2.bq b/schemas/org-mozilla-social-nightly/metrics/metrics.2.bq new file mode 100644 index 000000000..284d4c860 --- /dev/null +++ b/schemas/org-mozilla-social-nightly/metrics/metrics.2.bq @@ -0,0 +1,950 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-social-nightly/metrics/metrics.2.schema.json b/schemas/org-mozilla-social-nightly/metrics/metrics.2.schema.json new file mode 100644 index 000000000..66778fde5 --- /dev/null +++ b/schemas/org-mozilla-social-nightly/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_social_nightly", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":1130 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-tv-firefox/health/health.2.bq b/schemas/org-mozilla-tv-firefox/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-tv-firefox/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-tv-firefox/health/health.2.schema.json b/schemas/org-mozilla-tv-firefox/health/health.2.schema.json new file mode 100644 index 000000000..0914d48b1 --- /dev/null +++ b/schemas/org-mozilla-tv-firefox/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_tv_firefox", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-tv-firefox/metrics/metrics.2.bq b/schemas/org-mozilla-tv-firefox/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/org-mozilla-tv-firefox/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-tv-firefox/metrics/metrics.2.schema.json b/schemas/org-mozilla-tv-firefox/metrics/metrics.2.schema.json new file mode 100644 index 000000000..3ffd3ce27 --- /dev/null +++ b/schemas/org-mozilla-tv-firefox/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_tv_firefox", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-vrbrowser/health/health.2.bq b/schemas/org-mozilla-vrbrowser/health/health.2.bq new file mode 100644 index 000000000..42e0f09e2 --- /dev/null +++ b/schemas/org-mozilla-vrbrowser/health/health.2.bq @@ -0,0 +1,1005 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-vrbrowser/health/health.2.schema.json b/schemas/org-mozilla-vrbrowser/health/health.2.schema.json new file mode 100644 index 000000000..4dec8858a --- /dev/null +++ b/schemas/org-mozilla-vrbrowser/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_vrbrowser", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-vrbrowser/metrics/metrics.2.bq b/schemas/org-mozilla-vrbrowser/metrics/metrics.2.bq new file mode 100644 index 000000000..aaa2acf9b --- /dev/null +++ b/schemas/org-mozilla-vrbrowser/metrics/metrics.2.bq @@ -0,0 +1,1042 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-vrbrowser/metrics/metrics.2.schema.json b/schemas/org-mozilla-vrbrowser/metrics/metrics.2.schema.json new file mode 100644 index 000000000..b16325bc9 --- /dev/null +++ b/schemas/org-mozilla-vrbrowser/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_vrbrowser", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/org-mozilla-vrbrowser/session-end/session-end.2.bq b/schemas/org-mozilla-vrbrowser/session-end/session-end.2.bq new file mode 100644 index 000000000..570fa1e9f --- /dev/null +++ b/schemas/org-mozilla-vrbrowser/session-end/session-end.2.bq @@ -0,0 +1,1058 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counting how many general windows are opened in a session.\n", + "mode": "NULLABLE", + "name": "control_open_new_window", + "type": "INT64" + }, + { + "description": "Number of tabs activated during a session\n", + "mode": "NULLABLE", + "name": "tabs_activated", + "type": "INT64" + }, + { + "description": "Counting how many domains are visited in a session.\n", + "mode": "NULLABLE", + "name": "url_domains", + "type": "INT64" + }, + { + "description": "Counting how many URL links are visited in a session.\n", + "mode": "NULLABLE", + "name": "url_visits", + "type": "INT64" + }, + { + "description": "Counting how many times of moving a window in a session.\n", + "mode": "NULLABLE", + "name": "windows_movement", + "type": "INT64" + }, + { + "description": "Counting how many times of resizing a window in a session.\n", + "mode": "NULLABLE", + "name": "windows_resize", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "jwe", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Number of tabs opened during a session\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tabs_opened", + "type": "RECORD" + }, + { + "description": "Counting which multiple private window mode (single, double, triple) users are using in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "windows_opened_pri_window_count", + "type": "RECORD" + }, + { + "description": "Counting which multiple window mode (single, double, triple) users are using in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "windows_opened_window_count", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "labeled_rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The distribution channel name of this application. We use this field to recognize Firefox Reality is distributed to which channels, such as wavevrStore, oculusvr, picovr,etc.\n", + "mode": "NULLABLE", + "name": "distribution_channel_name", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "text", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "In Firefox Reality, we allow maximum three windows be placed at front, left, and right positions simultaneously. Using this metric to measure how long the front side window is active in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_active_in_front_time", + "type": "RECORD" + }, + { + "description": "In Firefox Reality, we allow maximum three windows be placed at front, left, and right positions simultaneously. Using this metric to measure how long the left side window is active in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_active_in_left_time", + "type": "RECORD" + }, + { + "description": "In Firefox Reality, we allow maximum three windows be placed at front, left, and right positions simultaneously. Using this metric to measure how long the right side window is active in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_active_in_right_time", + "type": "RECORD" + }, + { + "description": "Measuring how long a user uses double private windows in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_double_pri_window_opened_time", + "type": "RECORD" + }, + { + "description": "Measuring how long a user uses double windows in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_double_window_opened_time", + "type": "RECORD" + }, + { + "description": "Measuring how long a user uses single private window in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_single_pri_window_opened_time", + "type": "RECORD" + }, + { + "description": "Measuring how long a user uses single window in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_single_window_opened_time", + "type": "RECORD" + }, + { + "description": "Measuring how long a user uses triple private windows in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_triple_pri_window_opened_time", + "type": "RECORD" + }, + { + "description": "Measuring how long a user uses triple windows in a session.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "windows_triple_window_opened_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "url", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/org-mozilla-vrbrowser/session-end/session-end.2.schema.json b/schemas/org-mozilla-vrbrowser/session-end/session-end.2.schema.json new file mode 100644 index 000000000..1184754ae --- /dev/null +++ b/schemas/org-mozilla-vrbrowser/session-end/session-end.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"org_mozilla_vrbrowser", + "bq_metadata_format":"structured", + "bq_table":"session_end_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/pine/captcha-detection/captcha-detection.2.bq b/schemas/pine/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..11f74e83d --- /dev/null +++ b/schemas/pine/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1082 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nValue may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0`\nin pings near when the data upload pref is disabled (if Telemetry gets\nto go first), or between when a client_id has been removed and when it\nhas been regenerated.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_client_id", + "type": "STRING" + }, + { + "description": "The profile_group_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_profile_group_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/pine/captcha-detection/captcha-detection.2.schema.json b/schemas/pine/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..66dffd80d --- /dev/null +++ b/schemas/pine/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"pine", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/pine/health/health.2.bq b/schemas/pine/health/health.2.bq new file mode 100644 index 000000000..3b706ee1e --- /dev/null +++ b/schemas/pine/health/health.2.bq @@ -0,0 +1,1023 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + }, + { + "description": "The client_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nValue may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0`\nin pings near when the data upload pref is disabled (if Telemetry gets\nto go first), or between when a client_id has been removed and when it\nhas been regenerated.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_client_id", + "type": "STRING" + }, + { + "description": "The profile_group_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_profile_group_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/pine/health/health.2.schema.json b/schemas/pine/health/health.2.schema.json new file mode 100644 index 000000000..6cf38bc56 --- /dev/null +++ b/schemas/pine/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"pine", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":400 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/pine/metrics/metrics.2.bq b/schemas/pine/metrics/metrics.2.bq new file mode 100644 index 000000000..ded78bd90 --- /dev/null +++ b/schemas/pine/metrics/metrics.2.bq @@ -0,0 +1,41132 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "Whether the shell service identified this app as the default browser.\nChecked once near startup.\nOn Windows, this is operationalized as whether Firefox is the default\nHTTP protocol handler and the default HTML file handler.\n", + "mode": "NULLABLE", + "name": "browser_default_at_launch", + "type": "BOOL" + }, + { + "description": "True if the about:home startup cache was written via the AsyncShutdown blocker. This metric was generated to correspond to the Legacy Telemetry scalar browser.startup.abouthome_cache_shutdownwrite.\n", + "mode": "NULLABLE", + "name": "browser_startup_abouthome_cache_shutdownwrite", + "type": "BOOL" + }, + { + "description": "True when the browser was started in kiosk mode.\n", + "mode": "NULLABLE", + "name": "browser_startup_kiosk_mode", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.cache pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_cache.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_cache", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.cookies pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_cookies.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_cookies", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.downloads pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_downloads.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_downloads", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.formdata pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_formdata.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_formdata", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.history pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_history.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_history", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.offlineApps pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_offlineApps.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_offline_apps", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.openWindows pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_openWindows.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_open_windows", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.sessions pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_sessions.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_sessions", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.clearOnShutdown.siteSettings pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_siteSettings.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_clear_on_shutdown_site_settings", + "type": "BOOL" + }, + { + "description": "A boolean reporting the value of the privacy.sanitize.sanitizeOnShutdown pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_sanitize_sanitizeOnShutdown.\n", + "mode": "NULLABLE", + "name": "datasanitization_privacy_sanitize_sanitize_on_shutdown", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "Whether the installer is running from an elevated admin user\n", + "mode": "NULLABLE", + "name": "installation_first_seen_admin_user", + "type": "BOOL" + }, + { + "description": "(optional, present if installer_type is \"full\") Whether the default path was used\n", + "mode": "NULLABLE", + "name": "installation_first_seen_default_path", + "type": "BOOL" + }, + { + "description": "(optional, present if installer_type is \"full\") Whether this was an MSI install\n", + "mode": "NULLABLE", + "name": "installation_first_seen_from_msi", + "type": "BOOL" + }, + { + "description": "Whether there was already an install in this location\n", + "mode": "NULLABLE", + "name": "installation_first_seen_install_existed", + "type": "BOOL" + }, + { + "description": "Whether there was already any non-MSIX install on this system\n", + "mode": "NULLABLE", + "name": "installation_first_seen_other_inst", + "type": "BOOL" + }, + { + "description": "Whether there was already any MSIX install on this system\n", + "mode": "NULLABLE", + "name": "installation_first_seen_other_msix_inst", + "type": "BOOL" + }, + { + "description": "Whether the top-level profile directory existed\n", + "mode": "NULLABLE", + "name": "installation_first_seen_profdir_existed", + "type": "BOOL" + }, + { + "description": "(optional, present if installer_type is \"full\") Whether this was a silent install\n", + "mode": "NULLABLE", + "name": "installation_first_seen_silent", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Records technical data about whether Activity Stream construction completed successfully\n", + "mode": "NULLABLE", + "name": "newtab_activity_stream_ctor_success", + "type": "BOOL" + }, + { + "description": "Records technical data about whether waiting for the newtab built-in addon readyPromise succeeded.\n", + "mode": "NULLABLE", + "name": "newtab_addon_ready_success", + "type": "BOOL" + }, + { + "description": "True if a downloaded XPI file is where the newtab resources are being mapped from.\n", + "mode": "NULLABLE", + "name": "newtab_addon_xpi_used", + "type": "BOOL" + }, + { + "description": "Records whether the browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar preference is enabled or disabled\n", + "mode": "NULLABLE", + "name": "newtab_handoff_preference_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether this app was kept in macOS Dock on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_kept_in_dock.\n", + "mode": "NULLABLE", + "name": "os_environment_is_kept_in_dock", + "type": "BOOL" + }, + { + "description": "Whether the non-Private Browsing version of this app was pinned to taskbar on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_taskbar_pinned.\n", + "mode": "NULLABLE", + "name": "os_environment_is_taskbar_pinned", + "type": "BOOL" + }, + { + "description": "Whether the Private Browsing version of this app was pinned to taskbar on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_taskbar_pinned_private.\n", + "mode": "NULLABLE", + "name": "os_environment_is_taskbar_pinned_private", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "If a primary-password is enabled for this profile. Set soon after browser startup. Does not update if a primary password is added or removed after startup.\n", + "mode": "NULLABLE", + "name": "primary_password_enabled", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "Set to true if the user's default search engine has been allowed to be\noverridden by a third-party add-on or OpenSearch engine.\n", + "mode": "NULLABLE", + "name": "search_engine_default_overridden_by_third_party", + "type": "BOOL" + }, + { + "description": "Set to true if the user's default search engine has been allowed to be\noverridden by a third-party add-on or OpenSearch engine.\n", + "mode": "NULLABLE", + "name": "search_engine_private_overridden_by_third_party", + "type": "BOOL" + }, + { + "description": "Reflects the value of the user's browser.search.suggest.ohttp.enabled\npreference. This does not reflect the value of the featureGate preference.\n", + "mode": "NULLABLE", + "name": "search_suggestions_ohttp_enabled", + "type": "BOOL" + }, + { + "description": "Records whether TLS key logging has been enabled via the environment variable SSLKEYLOGFILE.\n", + "mode": "NULLABLE", + "name": "sslkeylogging_enabled", + "type": "BOOL" + }, + { + "description": "Whether or not this startup is the first startup since OS reboot (according to our best guess.) This metric was generated to correspond to the Legacy Telemetry scalar startup.is_cold.\n", + "mode": "NULLABLE", + "name": "startup_is_cold", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "User opted into sending Telemetry data again. This metric was generated to correspond to the Legacy Telemetry scalar telemetry.data_upload_optin.\n", + "mode": "NULLABLE", + "name": "telemetry_data_upload_optin", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times that about:tabcrashed was unable to find a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram FX_CONTENT_CRASH_DUMP_UNAVAILABLE.\n", + "mode": "NULLABLE", + "name": "browser_content_crash_dump_unavailable", + "type": "INT64" + }, + { + "description": "Counts the number of times that about:tabcrashed was unloaded without submitting.\nThis metric was generated to correspond to the Legacy Telemetry count histogram FX_CONTENT_CRASH_NOT_SUBMITTED.\n", + "mode": "NULLABLE", + "name": "browser_content_crash_not_submitted", + "type": "INT64" + }, + { + "description": "The number of five-second intervals ('ticks') the user was considered\n'active'.\n\n'active' means keyboard or mouse interaction with the application.\nIt doesn't take into account whether or not the window has focus or is in\nthe foreground, only if it is receiving these interaction events.\n\nMigrated from Telemetry's `browser.engagement.active_ticks`.\n", + "mode": "NULLABLE", + "name": "browser_engagement_active_ticks", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "The count of tab open events per subsession, across all windows, after the session has been restored. This includes tab open events from private windows and from manual session restorations (i.e. after crashes and from about:home), but excludes tabs opened vertically. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_open_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_tab_open_event_count", + "type": "INT64" + }, + { + "description": "The count of tab pinned events per subsession, across all windows, after the session has been restored. This includes tab pinned events from private windows. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_pinned_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_tab_pinned_event_count", + "type": "INT64" + }, + { + "description": "The count of the total non-unique URIs visited in a subsession, not restricted to a specific protocol, including page reloads and about:* pages (other than initial pages such as about:blank, ...), after the session has been restored. This does not include background page requests and URIs from embedded pages or private browsing. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.unfiltered_uri_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_unfiltered_uri_count", + "type": "INT64" + }, + { + "description": "The number of total non-unique http(s) URIs visited, including page\nreloads, after the session has been restored. URIs on minimized or\nbackground tabs may also be counted. Private browsing uris are included.\n\nMigrated from Telemetry's\n`browser.engagement.total_uri_count_normal_and_private_mode`.\n", + "mode": "NULLABLE", + "name": "browser_engagement_uri_count", + "type": "INT64" + }, + { + "description": "The count of the total non-unique http(s) URIs visited in a subsession, including page reloads, after the session has been restored. URIs on minimized or background tabs may also be counted towards this. Private browsing is not included in this count. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.total_uri_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_uri_count_normal_mode", + "type": "INT64" + }, + { + "description": "The count of tab open events with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.vertical_tab_open_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_vertical_tab_open_event_count", + "type": "INT64" + }, + { + "description": "The count of tab pinned events with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.vertical_tab_pinned_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_vertical_tab_pinned_event_count", + "type": "INT64" + }, + { + "description": "The count of browser window open events per subsession, after the session has been restored. The count includes private windows and the ones from manual session restorations (i.e. after crashes and from about:home). This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.window_open_event_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_window_open_event_count", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of:\n`browser.engagement.active_ticks`\n\nIntended for the purpose of testing client side sampling of data. This\nmetric is disabled by default and will be enabled only for the purpose\nof the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_active_ticks", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "How often something went awry within\n`AboutWelcome.submitGleanPingForPing`, preventing ping submission.\n", + "mode": "NULLABLE", + "name": "messaging_system_glean_ping_for_ping_failures", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "Number of Telemetry pings added to the archive during the session\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_ARCHIVE_SESSION_PING_COUNT.\n", + "mode": "NULLABLE", + "name": "telemetry_archive_session_ping_count", + "type": "INT64" + }, + { + "description": "Count of individual invalid payloads that were submitted to Telemetry.\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_INVALID_PAYLOAD_SUBMITTED.\n", + "mode": "NULLABLE", + "name": "telemetry_invalid_payload_submitted", + "type": "INT64" + }, + { + "description": "Number of pending Telemetry pings that failed to parse once loaded from the disk\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PENDING_LOAD_FAILURE_PARSE.\n", + "mode": "NULLABLE", + "name": "telemetry_pending_load_failure_parse", + "type": "INT64" + }, + { + "description": "Number of pending Telemetry pings that failed to load from the disk\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PENDING_LOAD_FAILURE_READ.\n", + "mode": "NULLABLE", + "name": "telemetry_pending_load_failure_read", + "type": "INT64" + }, + { + "description": "Number of Telemetry ping files evicted due to server errors (4XX HTTP code received)\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_EVICTED_FOR_SERVER_ERRORS.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_evicted_for_server_errors", + "type": "INT64" + }, + { + "description": "Number of archived Telemetry pings discarded because they exceeded the maximum size\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_SIZE_EXCEEDED_ARCHIVED.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_size_exceeded_archived", + "type": "INT64" + }, + { + "description": "Number of Telemetry pending pings discarded because they exceeded the maximum size\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_SIZE_EXCEEDED_PENDING.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_size_exceeded_pending", + "type": "INT64" + }, + { + "description": "Number of Telemetry pings discarded before sending because they exceeded the maximum size\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_SIZE_EXCEEDED_SEND.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_size_exceeded_send", + "type": "INT64" + }, + { + "description": "The number of pings that were submitted and had to wait for a client id (i.e. before it was cached or loaded from disk)\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_PING_SUBMISSION_WAITING_CLIENTID.\n", + "mode": "NULLABLE", + "name": "telemetry_ping_submission_waiting_clientid", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Number of fully loaded (i.e., not pending from session restore) tabs opened across all windows, collected at most every 5 minutes whenever the user interacts with the browser in the following ways: open tab/window, page load, restoring a pending tab.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOADED_TAB_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_engagement_loaded_tab_count", + "type": "RECORD" + }, + { + "description": "Number of tabs opened across all windows, collected at most every 5 minutes whenever the user interacts with the browser in the following ways: open tab/window, page load.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TAB_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_engagement_tab_count", + "type": "RECORD" + }, + { + "description": "The number of times that a profile has seen the 'Set Default Browser' dialog.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram BROWSER_SET_DEFAULT_DIALOG_PROMPT_RAWCOUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_set_default_dialog_prompt_rawcount", + "type": "RECORD" + }, + { + "description": "Result of the Set Default Browser dialog. After Firefox 89 the these values are: (0=Use Firefox + 'Don't ask again' checked, 1=Use Firefox + 'Don't ask again' unchecked, 2=Not Now + 'Don't ask again' checked, 3=Not Now + 'Don't ask again' unchecked). Before Firefox 89 these values were: (0=Use Firefox + 'Always perform check' unchecked, 1=Use Firefox + 'Always perform check' checked, 2=Not Now + 'Always perform check' unchecked, 3=Not Now + 'Always perform check' checked).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BROWSER_SET_DEFAULT_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_set_default_result", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "The width dimension of the 'sizes' attribute for .\nThis metric was generated to correspond to the Legacy Telemetry linear histogram LINK_ICON_SIZES_ATTR_DIMENSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "link_icon_sizes_attr_dimension", + "type": "RECORD" + }, + { + "description": "The possible types of the 'sizes' attribute for . 0: Attribute not specified, 1: 'any', 2: Integer dimensions, 3: Invalid value.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram LINK_ICON_SIZES_ATTR_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "link_icon_sizes_attr_usage", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "Number of directories in the archive at scan\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_ARCHIVE_DIRECTORIES_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_directories_count", + "type": "RECORD" + }, + { + "description": "Number of Telemetry directories evicted from the archive during cleanup, because they were too old\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_ARCHIVE_EVICTED_OLD_DIRS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_evicted_old_dirs", + "type": "RECORD" + }, + { + "description": "Number of Telemetry pings evicted from the archive during cleanup, because they were over the quota\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_EVICTED_OVER_QUOTA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_evicted_over_quota", + "type": "RECORD" + }, + { + "description": "The age of the oldest Telemetry archive directory in months\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_ARCHIVE_OLDEST_DIRECTORY_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_oldest_directory_age", + "type": "RECORD" + }, + { + "description": "Number of Telemetry pings in the archive at scan\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_SCAN_PING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_scan_ping_count", + "type": "RECORD" + }, + { + "description": "Number of Telemetry pings evicted from the pending pings directory during cleanup, because they were over the quota\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_PENDING_PINGS_EVICTED_OVER_QUOTA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_pings_evicted_over_quota", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Last time the background update was triggered.\n", + "mode": "NULLABLE", + "name": "background_update_time_last_update_scheduled", + "type": "STRING" + }, + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + }, + { + "description": "Legacy Telemetry's session start time.\nThe time at which the Telemetry session started.\nLikely near to the (wall-clock) time that the application started.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_session_start_date", + "type": "STRING" + }, + { + "description": "The timestamp when the user accepted the Terms of Use.\n", + "mode": "NULLABLE", + "name": "termsofuse_date", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Counts the number of search suggestion requests for OHTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_request_counter", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "Counts of the different ways sending a Telemetry ping can fail per ping type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_SEND_FAILURE_TYPE_PER_PING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "telemetry_send_failure_type_per_ping", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "The widgets in the toolbars. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.toolbar_widgets.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "browser_ui_mirror_for_toolbar_widgets", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Records technical data about whether the metric registration at runtime succeeded\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "newtab_metric_registered", + "type": "RECORD" + }, + { + "description": "Records technical data about whether the ping registration at runtime succeeded\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "newtab_ping_registered", + "type": "RECORD" + }, + { + "description": "Records whether Firefox was the default handler for particular file types or protocols. The result is split into keys which represent the file extension or scheme: currently, a subset of the file types Firefox registers to handle, namely \".pdf\" and \"mailto\" as protocol. In the future, more file types may be recorded. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_default_handler.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "os_environment_is_default_handler", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count for the number of errors encountered trying to determine attribution data: on Windows, from the installers (stub and full); on macOS, from an extended attributed on the .app bundle.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_ATTRIBUTION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_attribution_errors", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from about:home, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.about_home.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_about_home", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from about:newtab, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.about_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_about_newtab", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the contextmenu, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.contextmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_contextmenu", + "type": "RECORD" + }, + { + "description": "The count of URI loads triggered in a subsession from the context menu's visual search menuitem, broken down by the originating action.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the searchbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.searchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_searchbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_urlbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_urlbar_handoff", + "type": "RECORD" + }, + { + "description": "The count of URI loads triggered in a subsession from the urlbar after the search term was shown in the urlbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_persisted.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_urlbar_persisted", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar's search mode, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_searchmode.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_urlbar_searchmode", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from a webextension. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.webextension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_navigation_webextension", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Whether Firefox is the system default browser on startup. A true value is also recorded here, and a false value is recorded to set_default_error, if a user clicked 'Use Firefox as my default browser' on an in-product prompt. (Note that on Windows 8+ the latter action opens the right settings dialog but does not actually change the default browser without further user action.) On Windows, 'system default browser' is operationalized as whether Firefox is the default HTTP protocol handler.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_IS_USER_DEFAULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_is_user_default", + "type": "RECORD" + }, + { + "description": "True if the browser was unable to determine if the browser was set as default.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_IS_USER_DEFAULT_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_is_user_default_error", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from about:home. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.about_home.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_about_home", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from about:newtab. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.about_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_about_newtab", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the context menu. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.contextmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_contextmenu", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on visual-search SERP pages where the search was started from the context menu. The key format is the same as for the `contextmenu` labeled counter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was loaded by reloading the page. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.reload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_reload", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the search bar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.searchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_searchbar", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the system, e.g. command line. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.system.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_system", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was loaded from the tab history. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.tabhistory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_tabhistory", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from a place not categorized by the other scalars. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.unknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_unknown", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the urlbar. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_urlbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_urlbar_handoff", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the urlbar after the search term was shown in the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_persisted.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_urlbar_persisted", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from the urlbar in search mode. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_searchmode.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_urlbar_searchmode", + "type": "RECORD" + }, + { + "description": "Records clicks of adverts on SERP pages where the search was started from a webextension. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.webextension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_adclicks_webextension", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the about:home. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.about_home.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_about_home", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the about:newtab. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.about_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_about_newtab", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the context menu. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.contextmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_contextmenu", + "type": "RECORD" + }, + { + "description": "Records counts for in-content visual searches where the search was most likely started from the context menu. The key format is the same as for the `contextmenu` labeled counter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was loaded by reloading the page. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.reload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_reload", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the search bar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.searchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_searchbar", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the system, e.g. command line. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.system.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_system", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was loaded from the tab history. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.tabhistory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_tabhistory", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was started from a place that could not be determined or not categorized by the other scalars. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.unknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_unknown", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the urlbar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_urlbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_urlbar_handoff", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the urlbar after the search term was shown in the urlbar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_persisted.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_urlbar_persisted", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from the urlbar in search mode. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_searchmode.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_urlbar_searchmode", + "type": "RECORD" + }, + { + "description": "Records counts for in-content searches where the search was most likely started from a webextension. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.webextension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_content_webextension", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from about:home. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.about_home.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_about_home", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from about:newtab. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.about_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_about_newtab", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the context menu. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.contextmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_contextmenu", + "type": "RECORD" + }, + { + "description": "Records counts of visual-search SERP pages with adverts displayed where the search was started from the context menu. The key format is the same as for the `contextmenu` labeled counter.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was loaded by reloading the page. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.reload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_reload", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the search bar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.searchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_searchbar", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the system, e.g. command line. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.system.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_system", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was loaded from the tab history. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.tabhistory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_tabhistory", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from a place not categorized by the other scalars. The key format is ‘:’ See https://firefox- source-docs.mozilla.org/browser/search/telemetry.html#browser- search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.unknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_unknown", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_urlbar", + "type": "RECORD" + }, + { + "description": "The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_urlbar_handoff", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the urlbar after the search term was shown in the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_persisted.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_urlbar_persisted", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from the urlbar in search mode. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_searchmode.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_urlbar_searchmode", + "type": "RECORD" + }, + { + "description": "Records counts of SERP pages with adverts displayed where the search was started from a webextension. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.webextension.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_search_withads_webextension", + "type": "RECORD" + }, + { + "description": "True if the profile has `browser.shell.checkDefaultBrowser` set to true.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_SET_DEFAULT_ALWAYS_CHECK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_always_check", + "type": "RECORD" + }, + { + "description": "True if the browser was unable to set Firefox as the default browser\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BROWSER_SET_DEFAULT_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_error", + "type": "RECORD" + }, + { + "description": "Result of each attempt to set the default browser with SetDefaultExtensionHandlersUserChoice() for pdf extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_SET_DEFAULT_PDF_HANDLER_USER_CHOICE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_pdf_handler_user_choice_result", + "type": "RECORD" + }, + { + "description": "Result of each attempt to set the default browser with SetDefaultBrowserUserChoice()\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BROWSER_SET_DEFAULT_USER_CHOICE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_set_default_user_choice_result", + "type": "RECORD" + }, + { + "description": "Records when widgets are added, removed or moved in the UI. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.customized_widgets.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_customized_widgets", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the app menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.app_menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_app_menu", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the bookmarks bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.bookmarks_bar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_bookmarks_bar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the content context menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.content_context.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_content_context", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the menu bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.menu_bar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_menu_bar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the nav bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.nav_bar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_nav_bar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the overflow menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.overflow_menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_overflow_menu", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with page action items in the panel. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pageaction_panel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_pageaction_panel", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with page action items in the url bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pageaction_urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_pageaction_urlbar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the pinned area of the overflow menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pinned_overflow_menu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_pinned_overflow_menu", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Containers section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneContainers.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_containers", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Experimental section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneExperimental.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_experimental", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the General section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneGeneral.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_general", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Home section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneHome.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_home", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the More From Mozilla section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneMoreFromMozilla.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_more_from_mozilla", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Privacy section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_panePrivacy.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_privacy", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Search section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSearch.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_search", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Search results section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSearchResults.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_search_results", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in the Sync section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSync.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_sync", + "type": "RECORD" + }, + { + "description": "Records the items interacted with in any other section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneUnknown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_preferences_pane_unknown", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the tab bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_bar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_tabs_bar", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the tab context menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_context.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_tabs_context", + "type": "RECORD" + }, + { + "description": "Records a count for each entrypoint (the container of the trigger node) when an item from the tabs context menu is selected. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_context_entrypoint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_tabs_context_entrypoint", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the Unified Extensions area. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.unified_extensions_area.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_unified_extensions_area", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with items in the vertical tab bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.vertical_tabs_container.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_vertical_tabs_container", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user has clicked on the sponsored TopSites on the newtab page. The key is a combination of the source and the placement of the TopSites tile (1-based). such as 'urlbar_1', 'newtab_2'. This metric was generated to correspond to the Legacy Telemetry scalar contextual.services.topsites.click.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contextual_services_topsites_click", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user has viewed the sponsored TopSites on the newtab page. The key is a combination of the source and the placement of the TopSites tile (1-based). such as 'urlbar_1', 'newtab_2'. This metric was generated to correspond to the Legacy Telemetry scalar contextual.services.topsites.impression.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contextual_services_topsites_impression", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "We received a ping with non-scalar data on a field of this name.\nIf this is existing pre-PingCentre-replacement data, you may need to\naugment the logic in\n`AboutWelcome.submitGleanPingForPing` like the other `handledKeys`.\nIf this is for new, post-PingCentre-replacement data, you should\nprobably prefer a flat structure.\nIf you're unsure, please ask in\n[the #glean channel](https://chat.mozilla.org/#/room/#glean:mozilla.org).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "messaging_system_invalid_nested_data", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Records counts for when Firefox was invoked (i.e., was already running and was not launched) to handle a file type or protocol with `-osint -url ...`. The result is split into keys which represent the file extension: currently, the set of file types Firefox registers to handle, namely \".avif\", \".htm\", \".html\", \".pdf\", \".shtml\", \".xht\", \".xhtml\", \".svg\", \".webp\", and the set of protocol schemes that Firefox registers to handle, namely \"about\", \"http\", \"https\", \"mailto\". If Firefox was invoked to handle a file type or protocol it does not register to handle by default, the count is recorded as \".\" or \"\", respectively (neither of which are valid extension or protocol identifiers). This metric was generated to correspond to the Legacy Telemetry scalar os.environment.invoked_to_handle.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "os_environment_invoked_to_handle", + "type": "RECORD" + }, + { + "description": "Records counts for when Firefox was launched afresh (i.e., was not already running) to handle a file type or protocol with `-osint -url ...`. The result is split into keys which represent the file extension: currently, the set of file types Firefox registers to handle, namely \".avif\", \".htm\", \".html\", \".pdf\", \".shtml\", \".xht\", \".xhtml\", \".svg\", \".webp\", and the set of protocol schemes that Firefox registers to handle, namely \"about\", \"http\", \"https\", \"mailto\". If Firefox was launched to handle a file type or protocol it does not register to handle by default, the count is recorded as \".\" or \"\", respectively (neither of which are valid extension or protocol identifiers). This metric was generated to correspond to the Legacy Telemetry scalar os.environment.launched_to_handle.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "os_environment_launched_to_handle", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "This is deprecated metric that should not be incoporated into dashboards. Use the `sap.counts` event instead.\nThis metric has been added to Glean to aid transition of histograms and allow the legacy telemetry SEARCH_COUNTS to continue to be recorded.\nRecords search counts for search access points. The format is: .. For the urlbar when in search mode, the format is .urlbar-searchmode. For the urlbar when an internal @engine shortcut is used, the format is: .alias.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SEARCH_COUNTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sap_deprecated_counts", + "type": "RECORD" + }, + { + "description": "Count of impressions of the visual search context menu item. The counter's label is the engine's identifier if the engine is known at the time of impression and it's an app-provided engine. Otherwise the label is \"none\".\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sap_impression_counts_contextmenu_visual", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Counts the type of initialization statuses on start up.\nfailedSettings - failed loading and migrating the search settings file.\nfailedFetchEngines - failed to load or parse the configuration from remote\n settings.\nfailedLoadEngines - failed to create all the search engines from the\n configuration or user installed engines.\nfailedLoadSettingsAddonManager - the addon manager ready promise was rejected. (from FF135)\nsettingsCorrupt - the search settings were reset because of an exception, but\n the search service still finished initializing. (from FF136)\nsuccess - search service successfully initialized.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_service_initialization_status", + "type": "RECORD" + }, + { + "description": "Counts the number of aborted search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_aborted_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of failed search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_failed_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of aborted search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_aborted_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of failed search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_failed_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of successful search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_successful_requests", + "type": "RECORD" + }, + { + "description": "Counts the number of successful search suggestion fetches per search engine. Only records config engines using their short IDs ('id', not 'identifier') as labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_successful_requests", + "type": "RECORD" + }, + { + "description": "The input method the user used to select a result in the searchbar. 'enter' => The user hit the Enter key without choosing a result in the popup. 'enterSelection' => The user chose a result and then hit the Enter key. 'click' => The user clicked a result with the mouse.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FX_SEARCHBAR_SELECTED_RESULT_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "searchbar_selected_result_method", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "Counts the specific type of block.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "serp_ads_blocked_count", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "How often do which histograms that use `Telemetry::AccumulateTimeDelta` have clamped samples due to underflow?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_clamping_time_hgrams", + "type": "RECORD" + }, + { + "description": "Number of 'event' pings sent, by reason\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_EVENT_PING_SENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_event_ping_sent", + "type": "RECORD" + }, + { + "description": "Number of event recording failures, by type of failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_EVENT_RECORDING_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_event_recording_error", + "type": "RECORD" + }, + { + "description": "Number of event registration failures, by field causing the failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_EVENT_REGISTRATION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_event_registration_error", + "type": "RECORD" + }, + { + "description": "Count of individual invalid ping types that were submitted to Telemetry.\nThis metric was generated to correspond to the Legacy Telemetry count histogram TELEMETRY_INVALID_PING_TYPE_SUBMITTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_invalid_ping_type_submitted", + "type": "RECORD" + }, + { + "description": "Counts of the different ways sending a Telemetry ping can fail.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram TELEMETRY_SEND_FAILURE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_send_failure_type", + "type": "RECORD" + }, + { + "description": "Successful telemetry submission\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TELEMETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "telemetry_success", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecing the Search Bookmarks menu item in the Library menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.bookmarkmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_bookmarkmenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after being handed off from the search bar on the new tab page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.handoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_handoff", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecing the Search History menu item in a History menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.historymenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_historymenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a keyword offer result. The scalar key for local search modes entered using a restrict keyword will be suffixed with \"keyword\". For example: tabs_keyword, bookmarks_keyword, history_keyword, and actions_keyword. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.keywordoffer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_keywordoffer", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a one-off. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.oneoff.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_oneoff", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode from an unknown entry point. If values appear for this probe in Telemetry, we should review the entry points to search mode. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.other.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_other", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode by unified search button. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.searchbutton.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_searchbutton", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after pressing a keyboard shortcut. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.shortcut.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_shortcut", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting the Search Tabs menu item in the Tab Overflow menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabmenu.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_tabmenu", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a tab-to-search result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabtosearch.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_tabtosearch", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a tab-to-search onboarding result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabtosearch_onboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_tabtosearch_onboard", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut Top Site on the New Tab Page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.topsites_newtab.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_topsites_newtab", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut Top Site in the Urlbar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.topsites_urlbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_topsites_urlbar", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut on the macOS Touch Bar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.touchbar.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_touchbar", + "type": "RECORD" + }, + { + "description": "A keyed uint recording how many times the user entered a particular search mode after typing an alias. The scalar keys for local search modes entered by typing a restrict keyword will be suffixed with \"keyword\". For example: tabs_keyword, bookmarks_keyword, history_keyword, and actions_keyword. If instead search mode was entered by typing a restrict symbol the key will be suffixed with \"symbol\" (e.g. typing \"%\" will generate \"tabs_symbol\"). This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.typed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlbar_searchmode_typed", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Records the WebExtension ID of a search engine where the WebExtension is not installed (= 1), disabled (= 2), search engine no longer specified (= 4), a different name (= 5), where the submission URL is different between the search engine and the WebExtension (= 6). The value '3' has been replaced by '6' to distinguish newer entries. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.engine_invalid_webextension, which was removed in Fx 139.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_searchinit_engine_invalid_webextension", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Windows-only.\nCumulative bytes read by the application according to the OS, per startup\nphase.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_io_read", + "type": "RECORD" + }, + { + "description": "Windows-only.\nCumulative bytes written by the application according to the OS, per startup\nphase.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_io_write", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Records the latencies (ms) of search suggestions fetches per search engine. Keys in this histogram are search engine identifiers for built-in search engines and 'other' for non-built-in search engines.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SUGGESTIONS_LATENCY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_latency", + "type": "RECORD" + }, + { + "description": "Records the latencies (ms) of search suggestions fetches per search engine when using OHTTP. Keys in this histogram are the search engine identifier for configuration provided search engines and 'other' for search engines installed via other methods.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "search_suggestions_ohttp_latency", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "The volume of traffic received through browsers that were link targets for sponsored topsite or content navigations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "newtab_spons_nav_traffic_recvd", + "type": "RECORD" + }, + { + "description": "The volume of traffic sent through browsers that were link targets for sponsored topsite or content navigations.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "newtab_spons_nav_traffic_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "The size of the Telemetry archive (MB)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_ARCHIVE_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_size", + "type": "RECORD" + }, + { + "description": "The size (MB) of the Telemetry archived, compressed, pings exceeding the maximum file size\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_DISCARDED_ARCHIVED_PINGS_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_discarded_archived_pings_size", + "type": "RECORD" + }, + { + "description": "The size (MB) of the Telemetry pending pings exceeding the maximum file size\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_DISCARDED_PENDING_PINGS_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_discarded_pending_pings_size", + "type": "RECORD" + }, + { + "description": "The size (MB) of the ping data submitted to Telemetry exceeding the maximum size\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_DISCARDED_SEND_PINGS_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_discarded_send_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the Telemetry pending pings directory (MB). The special value 17 is used to indicate over quota pings.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram TELEMETRY_PENDING_PINGS_SIZE_MB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_pings_size", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "What widgets are in which toolbars. Not dissimilar from Telemetry's `browser.ui.toolbar_widgets`, but in a friendlier format. See https://firefox-source-docs.mozilla.org/browser/BrowserUsageTelemetry.html for how widget ids and positions are determined.\n", + "mode": "NULLABLE", + "name": "browser_ui_toolbar_widgets", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The count of maximum number of tabs open during a subsession, across all windows, including tabs in private windows and restored at startup. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_tab_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_tab_count", + "type": "INT64" + }, + { + "description": "The count of maximum number of pinned tabs open during a subsession. This includes private windows and the ones opened when starting the browser. Starting Firefox 85 this includes number of restored pinned tabs at startup. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_tab_pinned_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_tab_pinned_count", + "type": "INT64" + }, + { + "description": "The count of maximum number of tabs with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_vertical_tab_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_vertical_tab_count", + "type": "INT64" + }, + { + "description": "The count of maximum number of pinned tabs with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_vertical_tab_pinned_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_vertical_tab_pinned_count", + "type": "INT64" + }, + { + "description": "The count of maximum number of browser windows open during a subsession. This includes private windows and the ones opened when starting the browser. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_window_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_max_concurrent_window_count", + "type": "INT64" + }, + { + "description": "Windows only count of the browser profiles on the current system. This\ncounts profiles that have been used across all Windows user accounts on\nmachine since this probe was added. The value persists across installs.\nA value of 0 is reported if there is an error determining the correct\ncount. Unset on other platforms.\n", + "mode": "NULLABLE", + "name": "browser_engagement_profile_count", + "type": "INT64" + }, + { + "description": "The duration of the session in milliseconds, excluding the time the device was suspended. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.session_time_excluding_suspend.\n", + "mode": "NULLABLE", + "name": "browser_engagement_session_time_excluding_suspend", + "type": "INT64" + }, + { + "description": "The duration of the session in milliseconds, including the time the device was suspended. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.session_time_including_suspend.\n", + "mode": "NULLABLE", + "name": "browser_engagement_session_time_including_suspend", + "type": "INT64" + }, + { + "description": "The count of the unique domains visited in a subsession, after the session has been restored. Subdomains under eTLD are aggregated after the first level (i.e. test.example.com and other.example.com are only counted once). This does not include background page requests and domains from embedded pages or private browsing. The count is limited to 100 unique domains. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.unique_domains_count.\n", + "mode": "NULLABLE", + "name": "browser_engagement_unique_domains_count", + "type": "INT64" + }, + { + "description": "Records the number of insecure (i.e., using http) OpenSearch search engines a given user has installed. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.insecure_opensearch_engine_count.\n", + "mode": "NULLABLE", + "name": "browser_searchinit_insecure_opensearch_engine_count", + "type": "INT64" + }, + { + "description": "Records the number of OpenSearch search engines with insecure updates enabled (i.e., using http) a given user has installed. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.insecure_opensearch_update_count.\n", + "mode": "NULLABLE", + "name": "browser_searchinit_insecure_opensearch_update_count", + "type": "INT64" + }, + { + "description": "Records the number of secure (i.e., using https) OpenSearch search engines a given user has installed. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.secure_opensearch_engine_count.\n", + "mode": "NULLABLE", + "name": "browser_searchinit_secure_opensearch_engine_count", + "type": "INT64" + }, + { + "description": "Records the number of OpenSearch search engines with secure updates enabled (i.e., using https) a given user has installed. This metric was generated to correspond to the Legacy Telemetry scalar browser.searchinit.secure_opensearch_update_count.\n", + "mode": "NULLABLE", + "name": "browser_searchinit_secure_opensearch_update_count", + "type": "INT64" + }, + { + "description": "How the about:home startup cache functioned on startup.\n0: Result value was never set (error case) 1: Cache did not exist 2: Cache page stream was corrupt / inaccessible 3: Cache script stream was corrupt / inaccessible 4: Cache was invalidated by a version bump 5: Cache was valid, but read too late to be useful. 6: Cache was valid and used. 7: Cache is disabled. 8: User did not load about:home on its own by default. 9: Cache is disabled because about:newtab preloading is disabled.\nThis metric was generated to correspond to the Legacy Telemetry scalar browser.startup.abouthome_cache_result.\n", + "mode": "NULLABLE", + "name": "browser_startup_abouthome_cache_result", + "type": "INT64" + }, + { + "description": "The time, in milliseconds, it took to complete the last shutdown. On successful shutdown, Telemetry saves this to disk into Telemetry.ShutdownTime.txt. On the next startup this is loaded and recorded. This metric was generated to correspond to the Legacy Telemetry scalar browser.timings.last_shutdown.\n", + "mode": "NULLABLE", + "name": "browser_timings_last_shutdown", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "A count of how many \"session\" cookie exceptions a user has set. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.session_permission_exceptions.\n", + "mode": "NULLABLE", + "name": "datasanitization_session_permission_exceptions", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "Measures user retention of the Global Privacy Control. 0 = never enabled, 1 = enabled, 2 = disabled (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.global_privacy_control_enabled.\n", + "mode": "NULLABLE", + "name": "security_global_privacy_control_enabled", + "type": "INT64" + }, + { + "description": "Measures user retention of the HTTPS-Only Mode. 0 = never enabled, 1 = enabled, 2 = disabled (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.https_only_mode_enabled.\n", + "mode": "NULLABLE", + "name": "security_https_only_mode_enabled", + "type": "INT64" + }, + { + "description": "Measures user retention of the HTTPS-Only Mode in Private Browsing. 0 = https-only never enabled in PBM, 1 = https-only enabled in PBM, 2 = https-only disabled in PBM (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.https_only_mode_enabled_pbm.\n", + "mode": "NULLABLE", + "name": "security_https_only_mode_enabled_pbm", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "The time in seconds between the first browser window loading, and the time the OS started. This can give us an indication of whether starting the browser may have been the first thing the user did after starting their computer. This metric was generated to correspond to the Legacy Telemetry scalar startup.seconds_since_last_os_restart.\n", + "mode": "NULLABLE", + "name": "startup_seconds_since_last_os_restart", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "The version of the Terms of Use the user accepted.\n", + "mode": "NULLABLE", + "name": "termsofuse_version", + "type": "INT64" + }, + { + "description": "Record the timestamp of when the first about:home's Topsites are painted. Only records if about:home is set as the default homepage, and if sessions are not being restored by default. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.about_home_topsites_first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_about_home_topsites_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "Only sent if unable to collect firstSeen data. Can have value \"NotFoundError\" if file not found or other values depending on the failure reason.\n", + "mode": "NULLABLE", + "name": "installation_first_seen_failure_reason", + "type": "STRING" + }, + { + "description": "The type of installer used to install Firefox. The value is one of \"stub\", \"full\", or \"msix\"\n", + "mode": "NULLABLE", + "name": "installation_first_seen_installer_type", + "type": "STRING" + }, + { + "description": "The application version installed by the installer (not necessarily the current version)\n", + "mode": "NULLABLE", + "name": "installation_first_seen_version", + "type": "STRING" + }, + { + "description": "Records how Firefox was started on Windows. Currently will be one of \"Desktop\", \"DesktopPrivate\", \"StartMenu\" (including pins), \"StartMenuPrivate\", \"Taskbar\", \"TaskbarPrivate\", \"OtherShortcut\", or \"Other\" This metric was generated to correspond to the Legacy Telemetry scalar os.environment.launch_method.\n", + "mode": "NULLABLE", + "name": "os_environment_launch_method", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "The display name of the user's default engine.\n", + "mode": "NULLABLE", + "name": "search_engine_default_display_name", + "type": "STRING" + }, + { + "description": "Deprecated in Fx139, please use provider_id, partner_code,\noverridden_by_third_party and display_name instead.\n\nThe telemetry id of the search engine.\nFor example: \"engine1\"\n\nFor application-provided engines, this is the identifier plus telemetry\nsuffix supplied by the configuration.\nFor other engines, this is `other-`.\n", + "mode": "NULLABLE", + "name": "search_engine_default_engine_id", + "type": "STRING" + }, + { + "description": "A path relating to where the search engine was installed/loaded from.\nFor example:\n `[app]appDefault` for a config search engine.\n `[addon]` for a WebExtension-based engine.\n `[https]developer.mozilla.org/mdn-web-docs.xml` for an OpenSearch-based\n engine.\n `[policy]` for an enteprise policy engine.\n `[user]` for a search engine defined by the user or generated from a\n web page.\nNote: this metric is truncated at 100 characters.\n", + "mode": "NULLABLE", + "name": "search_engine_default_load_path", + "type": "STRING" + }, + { + "description": "The partner code of the user's default search engine, if defined/known,\nthat is being used for the search. Not all search engines have partner\ncodes.\n\nMay be empty for engines that are overridden by a third-party add-on or\nOpenSearch engine.\n", + "mode": "NULLABLE", + "name": "search_engine_default_partner_code", + "type": "STRING" + }, + { + "description": "The identifier of the user's default search engine if the search engine is\nan application provided engine. For user installed engines, this value will\nbe `other`.\n", + "mode": "NULLABLE", + "name": "search_engine_default_provider_id", + "type": "STRING" + }, + { + "description": "The verified status of the search engine.\nFor application provided engines, this will always be `default`.\nFor other engines this will either be `verified` or `unverified` depending\non if the loadPathHash is valid.\n", + "mode": "NULLABLE", + "name": "search_engine_default_verified", + "type": "STRING" + }, + { + "description": "The display name of the user's default engine.\n\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_display_name", + "type": "STRING" + }, + { + "description": "Deprecated in Fx139, please use provider_id, partner_code,\noverridden_by_third_party and display_name instead.\n\nThe telemetry id of the search engine.\nFor example: \"engine1\"\n\nFor application-provided engines, this is the identifier plus telemetry\nsuffix supplied by the configuration.\nFor other engines, this is `other-`.\n\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_engine_id", + "type": "STRING" + }, + { + "description": "A path relating to where the search engine was installed/loaded from.\nFor example:\n `[app]appDefault` for a config search engine.\n `[addon]` for a WebExtension-based engine.\n `[https]developer.mozilla.org/mdn-web-docs.xml` for an OpenSearch-based\n engine.\n `[policy]` for an enteprise policy engine.\n `[user]` for a search engine defined by the user or generated from a\n web page.\nNote: this metric is truncated at 100 characters.\n\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_load_path", + "type": "STRING" + }, + { + "description": "The partner code of the user's default search engine, if defined/known,\nthat is being used for the search. Not all search engines have partner\ncodes.\n\nMay be empty for engines that are overridden by a third-party add-on or\nOpenSearch engine.\n", + "mode": "NULLABLE", + "name": "search_engine_private_partner_code", + "type": "STRING" + }, + { + "description": "The identifier of the user's default search engine if the search engine is\nan application provided engine. For user installed engines, this value will\nbe `other`.\n", + "mode": "NULLABLE", + "name": "search_engine_private_provider_id", + "type": "STRING" + }, + { + "description": "The verified status of the search engine.\nFor application provided engines, this will always be `default`.\nFor other engines this will either be `verified` or `unverified` depending\non if the loadPathHash is valid.\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_verified", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "background_update_reasons_to_not_update", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize the cache (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_cache", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize firefox cookies (ms). A subset of FX_SANITIZE_COOKIES.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_COOKIES_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_cookies", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize recent downloads (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_DOWNLOADS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_downloads", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize stored form data (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_FORMDATA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_formdata", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize history (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_HISTORY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_history", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize the open windows list (ms). On Android, this is the time it takes to close all open tabs (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_OPENWINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_openwindows", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize saved sessions (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_SESSIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_sessions", + "type": "RECORD" + }, + { + "description": "Sanitize: Time it takes to sanitize site-specific settings (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_SITESETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_sitesettings", + "type": "RECORD" + }, + { + "description": "Sanitize: Total time it takes to sanitize (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_SANITIZE_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_sanitizer_total", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "The length of time (in milliseconds) that it takes for the cache worker to generate the cache and return it to the main thread\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_ABOUTHOME_CACHE_CONSTRUCTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "newtab_abouthome_cache_construction", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "Time between tab selection and first composite of the tab content onto the screen. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_tab_switch_composite", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "The time duration it takes for the search service to start up.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "search_service_startup_time", + "type": "RECORD" + }, + { + "description": "The time it takes to categorize elements on a SERP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "serp_categorization_duration", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for checking if the archive is over-quota\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_CHECKING_OVER_QUOTA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_checking_over_quota", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for evicting old directories\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_EVICTING_DIRS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_evicting_dirs", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for evicting over-quota pings\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_ARCHIVE_EVICTING_OVER_QUOTA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_archive_evicting_over_quota", + "type": "RECORD" + }, + { + "description": "Time taken to compress telemetry object (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_COMPRESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_compress", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for checking if the pending pings are over-quota\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_PENDING_CHECKING_OVER_QUOTA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_checking_over_quota", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes for evicting over-quota pending pings\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_PENDING_EVICTING_OVER_QUOTA_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_evicting_over_quota", + "type": "RECORD" + }, + { + "description": "The age, in days, of the pending pings.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_PENDING_PINGS_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_pending_pings_age", + "type": "RECORD" + }, + { + "description": "Time needed (in ms) for a failed send of a Telemetry ping to the servers and getting a reply back.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_SEND_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed (in ms) for a successful send of a Telemetry ping to the servers and getting a reply back.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_SEND_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_send_success", + "type": "RECORD" + }, + { + "description": "Time to stringify telemetry object (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TELEMETRY_STRINGIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "telemetry_stringify", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The submission URL of the default engine. This is only reported in the\ncases where:\n The engine is an application provided engine.\n The engine has the same name as an application provided engine.\n The engine matches one of a specific list of well known search engines.\n", + "mode": "NULLABLE", + "name": "search_engine_default_submission_url", + "type": "STRING" + }, + { + "description": "The submission URL of the default engine. This is only reported in the\ncases where:\n The engine is an application provided engine.\n The engine has the same name as an application provided engine.\n The engine matches one of a specific list of well known search engines.\nIf this string is an empty string (`\"\"`), this means that one or both of\nthe preferences `browser.search.separatePrivateDefault` and\n`browser.search.separatePrivateDefault.ui.enabled` are set to false.\nIt is possible that the user selects the same private engine as for the\ndefault engine, and hence both versions of these fields will be filled in.\n", + "mode": "NULLABLE", + "name": "search_engine_private_submission_url", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "url2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nValue may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0`\nin pings near when the data upload pref is disabled (if Telemetry gets\nto go first), or between when a client_id has been removed and when it\nhas been regenerated.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_client_id", + "type": "STRING" + }, + { + "description": "The profile_group_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_profile_group_id", + "type": "STRING" + }, + { + "description": "Legacy Telemetry's session identifier.\nSet near startup and stable until shutdown.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_session_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/pine/metrics/metrics.2.schema.json b/schemas/pine/metrics/metrics.2.schema.json new file mode 100644 index 000000000..4a2f2a971 --- /dev/null +++ b/schemas/pine/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"pine", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/pine/new-metric-capture-emulation/new-metric-capture-emulation.2.bq b/schemas/pine/new-metric-capture-emulation/new-metric-capture-emulation.2.bq new file mode 100644 index 000000000..46fd9c94a --- /dev/null +++ b/schemas/pine/new-metric-capture-emulation/new-metric-capture-emulation.2.bq @@ -0,0 +1,642 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "The number of five-second intervals ('ticks') the user was considered\n'active'.\n\n'active' means keyboard or mouse interaction with the application.\nIt doesn't take into account whether or not the window has focus or is in\nthe foreground, only if it is receiving these interaction events.\n\nMigrated from Telemetry's `browser.engagement.active_ticks`.\n", + "mode": "NULLABLE", + "name": "browser_engagement_active_ticks", + "type": "INT64" + }, + { + "description": "The number of total non-unique http(s) URIs visited, including page\nreloads, after the session has been restored. URIs on minimized or\nbackground tabs may also be counted. Private browsing uris are included.\n\nMigrated from Telemetry's\n`browser.engagement.total_uri_count_normal_and_private_mode`.\n", + "mode": "NULLABLE", + "name": "browser_engagement_uri_count", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/pine/new-metric-capture-emulation/new-metric-capture-emulation.2.schema.json b/schemas/pine/new-metric-capture-emulation/new-metric-capture-emulation.2.schema.json new file mode 100644 index 000000000..e99e768bc --- /dev/null +++ b/schemas/pine/new-metric-capture-emulation/new-metric-capture-emulation.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"pine", + "bq_metadata_format":"structured", + "bq_table":"new_metric_capture_emulation_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/pine/pseudo-main/pseudo-main.2.bq b/schemas/pine/pseudo-main/pseudo-main.2.bq new file mode 100644 index 000000000..3b004dba1 --- /dev/null +++ b/schemas/pine/pseudo-main/pseudo-main.2.bq @@ -0,0 +1,649 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The `profileSubsessionCounter` from the Legacy Telemetry \"main\" ping.\nThis is a value that monotonically increases once for every \"main\" ping\nthat has been submitted.\nIt is a sequence number by a longer name.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_profile_subsession_counter", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The client_id according to Telemetry.\nMight not always have a value due to being too early for it to have\nloaded.\nValue may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0`\nin pings near when the data upload pref is disabled (if Telemetry gets\nto go first), or between when a client_id has been removed and when it\nhas been regenerated.\nDoes not need to be sent in the Glean \"deletion-request\" ping.\n", + "mode": "NULLABLE", + "name": "legacy_telemetry_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/pine/pseudo-main/pseudo-main.2.schema.json b/schemas/pine/pseudo-main/pseudo-main.2.schema.json new file mode 100644 index 000000000..1d4eaac44 --- /dev/null +++ b/schemas/pine/pseudo-main/pseudo-main.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"pine", + "bq_metadata_format":"structured", + "bq_table":"pseudo_main_v1", + "expiration_policy":{ + "delete_after_days":775 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/thunderbird-desktop/captcha-detection/captcha-detection.2.bq b/schemas/thunderbird-desktop/captcha-detection/captcha-detection.2.bq new file mode 100644 index 000000000..1364ff46a --- /dev/null +++ b/schemas/thunderbird-desktop/captcha-detection/captcha-detection.2.bq @@ -0,0 +1,1063 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Whether the user has enabled cookie partitioning at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cookie partioning in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior_optinpartitioning_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled suspected fingerprinters protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_fingerprintingprotection_pbm", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled resist fingerprinting in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_resistfingerprinting_pbmode", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled cryptomining protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_cryptomining_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled known fingerprinters protection at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_fingerprinting_enabled", + "type": "BOOL" + }, + { + "description": "Whether the user has enabled tracking protection in PBM at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_privacy_trackingprotection_pbm_enabled", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc", + "type": "INT64" + }, + { + "description": "Number of times the ArkoseLabs was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps", + "type": "INT64" + }, + { + "description": "How many times the ArkoseLabs challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_ps_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was successfully completed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pc_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was failed.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_pf_pbm", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps", + "type": "INT64" + }, + { + "description": "How many times the AWS WAF challenge was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was successfully completed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was failed since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_cf_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc", + "type": "INT64" + }, + { + "description": "Number of times the Cloudflare Turnstile challenge was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_cloudflare_turnstile_oc_pbm", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl", + "type": "INT64" + }, + { + "description": "How many times the Datadome blocked a user.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_bl_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Datadome was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_oc", + "type": "INT64" + }, + { + "description": "How many times the user passed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc", + "type": "INT64" + }, + { + "description": "How many times the user completed a Datadome puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_pc_pbm", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps", + "type": "INT64" + }, + { + "description": "The number of times the Datadome puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_datadome_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 challenge automatically since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc", + "type": "INT64" + }, + { + "description": "Number of times the Google reCAPTCHA v2 was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps", + "type": "INT64" + }, + { + "description": "Number of times the user has seen a Google reCAPTCHA v2 puzzle since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_google_recaptcha_v2_ps_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha challenge automatically.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ac_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha was loaded since last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_oc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc", + "type": "INT64" + }, + { + "description": "Number of times the user completed an hCaptcha puzzle.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_pc_pbm", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps", + "type": "INT64" + }, + { + "description": "Number of times the hCaptcha puzzle was shown.\n", + "mode": "NULLABLE", + "name": "captcha_detection_hcaptcha_ps_pbm", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited", + "type": "INT64" + }, + { + "description": "The number of pages visited since the last ping submission.\n", + "mode": "NULLABLE", + "name": "captcha_detection_pages_visited_pbm", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the ArkoseLabs challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_arkoselabs_solutions_required_pbm", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required", + "type": "RECORD" + }, + { + "description": "The number of solutions required to complete the AWS WAF challenge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "captcha_detection_awswaf_solutions_required_pbm", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The user's cookie behavior setting at the time of data collection.\n", + "mode": "NULLABLE", + "name": "captcha_detection_network_cookie_cookiebehavior", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/thunderbird-desktop/captcha-detection/captcha-detection.2.schema.json b/schemas/thunderbird-desktop/captcha-detection/captcha-detection.2.schema.json new file mode 100644 index 000000000..fb80dc0ca --- /dev/null +++ b/schemas/thunderbird-desktop/captcha-detection/captcha-detection.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"thunderbird_desktop", + "bq_metadata_format":"structured", + "bq_table":"captcha_detection_v1", + "expiration_policy":{ + "delete_after_days":420 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/thunderbird-desktop/health/health.2.bq b/schemas/thunderbird-desktop/health/health.2.bq new file mode 100644 index 000000000..12d597d00 --- /dev/null +++ b/schemas/thunderbird-desktop/health/health.2.bq @@ -0,0 +1,1011 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "A running count of how many times the Glean SDK has been initialized.\n", + "mode": "NULLABLE", + "name": "glean_health_init_count", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to read the `client_id.txt` file from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_read_error", + "type": "RECORD" + }, + { + "description": "Count of different errors that happened when trying to write the `client_id.txt` file to disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_health_file_write_error", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "An exceptional state was detected upon trying to load the database.\n\nValid options are:\n\n- `empty-db`\n- `regen-db`\n- `c0ffee-in-db`\n- `client-id-mismatch`\n", + "mode": "NULLABLE", + "name": "glean_health_exception_state", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A client_id recovered from a `client_id.txt` file on disk.\nOnly expected to have a value for the exception states `empty-db`, `c0ffee-in-db` and `client-id-mismatch`.\nSee `exception_state` for different exception states when this can happen.\n", + "mode": "NULLABLE", + "name": "glean_health_recovered_client_id", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "uuid", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/thunderbird-desktop/health/health.2.schema.json b/schemas/thunderbird-desktop/health/health.2.schema.json new file mode 100644 index 000000000..4c02e5e53 --- /dev/null +++ b/schemas/thunderbird-desktop/health/health.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"thunderbird_desktop", + "bq_metadata_format":"structured", + "bq_table":"health_v1", + "expiration_policy":{ + "delete_after_days":420 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file diff --git a/schemas/thunderbird-desktop/metrics/metrics.2.bq b/schemas/thunderbird-desktop/metrics/metrics.2.bq new file mode 100644 index 000000000..3daea1b9e --- /dev/null +++ b/schemas/thunderbird-desktop/metrics/metrics.2.bq @@ -0,0 +1,37337 @@ +[ + { + "description": "A JSON string containing any payload properties not present in the schema", + "mode": "NULLABLE", + "name": "additional_properties", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The optional Android specific SDK version of the software running on this hardware device.", + "mode": "NULLABLE", + "name": "android_sdk_version", + "type": "STRING" + }, + { + "description": "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "app_build", + "type": "STRING" + }, + { + "description": "The channel the application is being distributed on.", + "mode": "NULLABLE", + "name": "app_channel", + "type": "STRING" + }, + { + "description": "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "mode": "NULLABLE", + "name": "app_display_version", + "type": "STRING" + }, + { + "description": "The architecture of the device, (e.g. \"arm\", \"x86\").", + "mode": "NULLABLE", + "name": "architecture", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The attribution campaign (e.g. 'mozilla-org').", + "mode": "NULLABLE", + "name": "campaign", + "type": "STRING" + }, + { + "description": "The attribution content (e.g. 'firefoxview').", + "mode": "NULLABLE", + "name": "content", + "type": "STRING" + }, + { + "description": "The attribution medium (e.g. 'organic' for a search engine).", + "mode": "NULLABLE", + "name": "medium", + "type": "STRING" + }, + { + "description": "The attribution source (e.g. 'google-play').", + "mode": "NULLABLE", + "name": "source", + "type": "STRING" + }, + { + "description": "The attribution term (e.g. 'browser with developer tools for android').", + "mode": "NULLABLE", + "name": "term", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "attribution", + "type": "RECORD" + }, + { + "description": "The date & time the application was built", + "mode": "NULLABLE", + "name": "build_date", + "type": "STRING" + }, + { + "description": "A UUID uniquely identifying the client.", + "mode": "NULLABLE", + "name": "client_id", + "type": "STRING" + }, + { + "description": "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_manufacturer", + "type": "STRING" + }, + { + "description": "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "mode": "NULLABLE", + "name": "device_model", + "type": "STRING" + }, + { + "fields": [ + { + "description": "The distribution name (e.g. 'MozillaOnline').", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "distribution", + "type": "RECORD" + }, + { + "description": "The date of the first run of the application.", + "mode": "NULLABLE", + "name": "first_run_date", + "type": "STRING" + }, + { + "description": "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "mode": "NULLABLE", + "name": "locale", + "type": "STRING" + }, + { + "description": "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "description": "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "mode": "NULLABLE", + "name": "os_version", + "type": "STRING" + }, + { + "description": "An optional running counter of the number of sessions for a client.", + "mode": "NULLABLE", + "name": "session_count", + "type": "INT64" + }, + { + "description": "An optional UUID uniquely identifying the client's current session.", + "mode": "NULLABLE", + "name": "session_id", + "type": "STRING" + }, + { + "description": "The version of the Glean SDK", + "mode": "NULLABLE", + "name": "telemetry_sdk_build", + "type": "STRING" + }, + { + "description": "The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "mode": "NULLABLE", + "name": "windows_build_number", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "client_info", + "type": "RECORD" + }, + { + "description": "The document ID specified in the URI when the client sent this message", + "mode": "NULLABLE", + "name": "document_id", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "category", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "extra", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "timestamp", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "events", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Results of a geographic lookup based on the client's IP address", + "fields": [ + { + "mode": "NULLABLE", + "name": "city", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "country", + "type": "STRING" + }, + { + "description": "The specific geo database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "First major country subdivision, typically a state, province, or county", + "mode": "NULLABLE", + "name": "subdivision1", + "type": "STRING" + }, + { + "description": "Second major country subdivision; not applicable for most countries", + "mode": "NULLABLE", + "name": "subdivision2", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "geo", + "type": "RECORD" + }, + { + "description": "Headers included in the client's HTTP request", + "fields": [ + { + "description": "Date HTTP header", + "mode": "NULLABLE", + "name": "date", + "type": "STRING" + }, + { + "description": "DNT (Do Not Track) HTTP header", + "mode": "NULLABLE", + "name": "dnt", + "type": "STRING" + }, + { + "description": "X-Debug-Id HTTP header", + "mode": "NULLABLE", + "name": "x_debug_id", + "type": "STRING" + }, + { + "description": "X-Foxsec-IP-Reputation header", + "mode": "NULLABLE", + "name": "x_foxsec_ip_reputation", + "type": "STRING" + }, + { + "description": "X-LB-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_lb_tags", + "type": "STRING" + }, + { + "description": "X-PingSender-Version HTTP header", + "mode": "NULLABLE", + "name": "x_pingsender_version", + "type": "STRING" + }, + { + "description": "X-Source-Tags HTTP header", + "mode": "NULLABLE", + "name": "x_source_tags", + "type": "STRING" + }, + { + "description": "X-Telemetry-Agent HTTP header", + "mode": "NULLABLE", + "name": "x_telemetry_agent", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "header", + "type": "RECORD" + }, + { + "description": "Results of ISP lookup based on the client's IP address", + "fields": [ + { + "description": "The specific geo ISP database version used for this lookup", + "mode": "NULLABLE", + "name": "db_version", + "type": "STRING" + }, + { + "description": "The name of the ISP associated with the client's IP address", + "mode": "NULLABLE", + "name": "name", + "type": "STRING" + }, + { + "description": "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name", + "mode": "NULLABLE", + "name": "organization", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "isp", + "type": "RECORD" + }, + { + "description": "Parsed components of the client's user agent string", + "fields": [ + { + "mode": "NULLABLE", + "name": "browser", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "version", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "user_agent", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metadata", + "type": "RECORD" + }, + { + "fields": [ + { + "fields": [ + { + "description": "Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links.\n", + "mode": "NULLABLE", + "name": "a11y_always_underline_links", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate.\n", + "mode": "NULLABLE", + "name": "a11y_backplate", + "type": "BOOL" + }, + { + "description": "Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors.\n", + "mode": "NULLABLE", + "name": "a11y_invert_colors", + "type": "BOOL" + }, + { + "description": "Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors.\n", + "mode": "NULLABLE", + "name": "a11y_use_system_colors", + "type": "BOOL" + }, + { + "description": "Whether application compatibility is enforced for add-ons.\n", + "mode": "NULLABLE", + "name": "addons_manager_compatibility_check_enabled", + "type": "BOOL" + }, + { + "description": "Whether the extension blocklist is enabled.\nCorresponds to the `extensions.blocklist.enabled` pref.\n", + "mode": "NULLABLE", + "name": "blocklist_enabled", + "type": "BOOL" + }, + { + "description": "True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_cryptomining_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled.\n", + "mode": "NULLABLE", + "name": "contentblocking_fingerprinting_blocking_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist convenience option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_baseline_enabled", + "type": "BOOL" + }, + { + "description": "True if the tracking protection allowlist baseline option is enabled. Updates on \"idle daily\".\n", + "mode": "NULLABLE", + "name": "contentblocking_tp_allowlist_convenience_enabled", + "type": "BOOL" + }, + { + "description": "Tracks the value of the cookiebanners.service.detectOnly pref.\n", + "mode": "NULLABLE", + "name": "cookie_banners_service_detect_only", + "type": "BOOL" + }, + { + "description": "Whether the user clicked on any \"reveal\" link. \"reveal\" links are displayed in shadow dom trees in the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.reveal_link_clicked.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_reveal_link_clicked", + "type": "BOOL" + }, + { + "description": "Whether the markup view displayed any #shadow-root element in the UI. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_displayed.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_displayed", + "type": "BOOL" + }, + { + "description": "Whether the user expanded any #shadow-root element. This metric was generated to correspond to the Legacy Telemetry scalar devtools.shadowdom.shadow_root_expanded.\n", + "mode": "NULLABLE", + "name": "devtools_shadowdom_shadow_root_expanded", + "type": "BOOL" + }, + { + "description": "Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used.\n", + "mode": "NULLABLE", + "name": "dom_parentprocess_private_window_used", + "type": "BOOL" + }, + { + "description": "Whether e10s is on, i.e. browser tabs open by default in a different\nprocess.\nSee `nsIXULRuntime.browserTabsRemoteAutostart`\n", + "mode": "NULLABLE", + "name": "e10s_enabled", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_policy", + "type": "BOOL" + }, + { + "description": "Corresponds to the value of `extensions.webextensions.remote` pref.\n", + "mode": "NULLABLE", + "name": "extensions_use_remote_pref", + "type": "BOOL" + }, + { + "description": "Whether fission is enabled this session, and subframes can load in a\ndifferent process.\nSee `nsIXULRuntime.fissionAutostart`\n", + "mode": "NULLABLE", + "name": "fission_enabled", + "type": "BOOL" + }, + { + "description": "True if we failed to register with the idle service. Absent otherwise.\nMeans IPC probably isn't working well.\nChild-process data will likely be absent, or incomplete.\n", + "mode": "NULLABLE", + "name": "fog_failed_idle_registration", + "type": "BOOL" + }, + { + "description": "A boolean sent once per session to represent whether the formautofill is available in the build This metric was generated to correspond to the Legacy Telemetry scalar formautofill.availability.\n", + "mode": "NULLABLE", + "name": "formautofill_availability", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for credit cards.\n", + "mode": "NULLABLE", + "name": "formautofill_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether Direct2D is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_d2d_enabled", + "type": "BOOL" + }, + { + "description": "Whether DirectWrite is enabled. (Windows-only)\n", + "mode": "NULLABLE", + "name": "gfx_dwrite_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`).\n", + "mode": "NULLABLE", + "name": "gfx_headless", + "type": "BOOL" + }, + { + "description": "Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor.\n", + "mode": "NULLABLE", + "name": "gfx_os_compositor", + "type": "BOOL" + }, + { + "description": "Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_headless", + "type": "BOOL" + }, + { + "description": "Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr.\n", + "mode": "NULLABLE", + "name": "gfx_supports_hdr", + "type": "BOOL" + }, + { + "description": "True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled.\n", + "mode": "NULLABLE", + "name": "networking_http3_enabled", + "type": "BOOL" + }, + { + "description": "Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac.\n", + "mode": "NULLABLE", + "name": "os_environment_is_admin_without_uac", + "type": "BOOL" + }, + { + "description": "Whether or not an external trust anchor module was loaded.", + "mode": "NULLABLE", + "name": "pkcs11_external_trust_anchor_module_loaded", + "type": "BOOL" + }, + { + "description": "Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise.\n", + "mode": "NULLABLE", + "name": "policies_is_enterprise", + "type": "BOOL" + }, + { + "description": "Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid.\n", + "mode": "NULLABLE", + "name": "preferences_prefs_file_was_invalid", + "type": "BOOL" + }, + { + "description": "Check at startup whether OS Authentication has been enabled for passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_os_auth_enabled", + "type": "BOOL" + }, + { + "description": "Whether password saving is enabled globally.\nTracks the pref `signon.rememberSignons`.\n", + "mode": "NULLABLE", + "name": "pwmgr_saving_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app has a package identity.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_has_win_package_id", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-Windows64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_64", + "type": "BOOL" + }, + { + "description": "Whether we're in Windows32-on-WindowsForArm64 mode.\nWindows only.\n", + "mode": "NULLABLE", + "name": "system_is_wow_arm_64", + "type": "BOOL" + }, + { + "description": "Whether app updates are set to auto-download.\n", + "mode": "NULLABLE", + "name": "update_settings_auto_download", + "type": "BOOL" + }, + { + "description": "Whether updates can be delivered in the background.\n", + "mode": "NULLABLE", + "name": "update_settings_background", + "type": "BOOL" + }, + { + "description": "Whether updates are available.\n", + "mode": "NULLABLE", + "name": "update_settings_enabled", + "type": "BOOL" + }, + { + "description": "Whether the app was built with the updater binary.\nCorresponds to the value of the `MOZ_UPDATER` define.\n", + "mode": "NULLABLE", + "name": "updater_available", + "type": "BOOL" + }, + { + "description": "Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode.\n", + "mode": "NULLABLE", + "name": "widget_dark_mode", + "type": "BOOL" + } + ], + "mode": "NULLABLE", + "name": "boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection]\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_count_classified_tracker", + "type": "INT64" + }, + { + "description": "The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_added", + "type": "INT64" + }, + { + "description": "The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened.\n", + "mode": "NULLABLE", + "name": "browser_engagement_bookmarks_toolbar_bookmark_opened", + "type": "INT64" + }, + { + "description": "How many certificate signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "cert_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many certificate trust lookups are performed.\n", + "mode": "NULLABLE", + "name": "cert_trust_cache_total", + "type": "INT64" + }, + { + "description": "How many emails were sent by the user.", + "mode": "NULLABLE", + "name": "compose_mails_sent", + "type": "INT64" + }, + { + "description": "A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count.\n", + "mode": "NULLABLE", + "name": "contentblocking_trackers_blocked_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ABOUTDEBUGGING_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a context menu was opened for an accessible object in the accessibility tree. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_opened.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_accessible_context_menu_opened", + "type": "INT64" + }, + { + "description": "Number of times a DOM node was inspected from within the Accessibility tool. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.node_inspected_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_node_inspected_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Accessibility tool has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the picker tool has been used in DevTools Accessibility panel. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.picker_used_count.\n", + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_used_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Animation Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_ANIMATIONINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_animationinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_BROWSERCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_browserconsole_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the Changes panel has been opened. This metric was generated to correspond to the Legacy Telemetry scalar devtools.changesview.opened_count.\n", + "mode": "NULLABLE", + "name": "devtools_changesview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times about:debugging has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPATIBILITYVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_compatibilityview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Computed View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_COMPUTEDVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_computedview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times a custom developer tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_CUSTOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_custom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools DOM Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_DOM_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_dom_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Font Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_FONTINSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_fontinspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the grid view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.grid.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_grid_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times a different node is marked as selected in the Inspector regardless of the cause: context menu, manual selection in markup view, etc. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.node_selection_count.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_node_selection_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_INSPECTOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_inspector_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Browser Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSBROWSERDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Debugger has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSDEBUGGER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsdebugger_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools JS Profiler has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_JSPROFILER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_jsprofiler_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the layout view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.layout.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_layout_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Layout View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_LAYOUTVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_layoutview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the markup view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_markup_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the scrollable inspector badge has been clicked. This metric was generated to correspond to the Legacy Telemetry scalar devtools.markup.scrollable.badge.clicked.\n", + "mode": "NULLABLE", + "name": "devtools_markup_scrollable_badge_clicked", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Memory Tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MEMORY_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_memory_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the DevTools menu.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_MENU_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_menu_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Network Monitor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_NETMONITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_netmonitor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools options panel has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_OPTIONS_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_options_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Eyedropper has been opened via the color picker.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_PICKER_EYEDROPPER_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_picker_eyedropper_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Responsive Design Mode tool has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RESPONSIVE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_opened_count", + "type": "INT64" + }, + { + "description": "Number of Responsive Design Mode opens with a toolbox already open. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.toolbox_opened_first.\n", + "mode": "NULLABLE", + "name": "devtools_responsive_toolbox_opened_first", + "type": "INT64" + }, + { + "description": "Number of times the DevTools flexbox highlighter was activated from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.flexboxhighlighter.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_flexboxhighlighter_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools grid inspector was opened from the rules view. This metric was generated to correspond to the Legacy Telemetry scalar devtools.rules.gridinspector.opened.\n", + "mode": "NULLABLE", + "name": "devtools_rules_gridinspector_opened", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Rule View has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_RULEVIEW_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_ruleview_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Storage Inspector has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STORAGE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_storage_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Style Editor has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_STYLEEDITOR_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_styleeditor_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools toolbox has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_TOOLBOX_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_toolbox_opened_count", + "type": "INT64" + }, + { + "description": "Number of times the DevTools Web Console has been opened.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEVTOOLS_WEBCONSOLE_OPENED_COUNT.\n", + "mode": "NULLABLE", + "name": "devtools_webconsole_opened_count", + "type": "INT64" + }, + { + "description": "The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch", + "type": "INT64" + }, + { + "description": "The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_build_id_mismatch_false_positive", + "type": "INT64" + }, + { + "description": "The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_change_considered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_lowered", + "type": "INT64" + }, + { + "description": "The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised.\n", + "mode": "NULLABLE", + "name": "dom_contentprocess_os_priority_raised", + "type": "INT64" + }, + { + "description": "Count slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_NOTICE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_notice_count", + "type": "INT64" + }, + { + "description": "The number of pages that trigger slow script notices\nThis metric was generated to correspond to the Legacy Telemetry count histogram SLOW_SCRIPT_PAGE_COUNT.\n", + "mode": "NULLABLE", + "name": "dom_slow_script_page_count", + "type": "INT64" + }, + { + "description": "The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened.\n", + "mode": "NULLABLE", + "name": "downloads_file_opened", + "type": "INT64" + }, + { + "description": "How many times suggestion to use FileLink were ignored.", + "mode": "NULLABLE", + "name": "filelink_filelink_ignored", + "type": "INT64" + }, + { + "description": "The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next.\n", + "mode": "NULLABLE", + "name": "findbar_find_next", + "type": "INT64" + }, + { + "description": "The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev.\n", + "mode": "NULLABLE", + "name": "findbar_find_prev", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Highlight All\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all.\n", + "mode": "NULLABLE", + "name": "findbar_highlight_all", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Case\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case.\n", + "mode": "NULLABLE", + "name": "findbar_match_case", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Match Diacritics\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics.\n", + "mode": "NULLABLE", + "name": "findbar_match_diacritics", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Find toolbar\" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown.\n", + "mode": "NULLABLE", + "name": "findbar_shown", + "type": "INT64" + }, + { + "description": "The count of how many times the \"Whole Words\" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words.\n", + "mode": "NULLABLE", + "name": "findbar_whole_words", + "type": "INT64" + }, + { + "description": "Counts the number of times init had to be called during shutdown.\nShould never have a value for any session long enough to grow idle.\n", + "mode": "NULLABLE", + "name": "fog_inits_during_shutdown", + "type": "INT64" + }, + { + "description": "The number of times we failed to flush all non-parent-process data,\nthrowing even partial results into the trash.\nIf this number is high, we might consider writing custom `MozPromise`-\nhandling code instead of using `MozPromise::All`.\n", + "mode": "NULLABLE", + "name": "fog_ipc_flush_failures", + "type": "INT64" + }, + { + "description": "The number of times the ipc buffer failed to be replayed in the\nparent process.\n", + "mode": "NULLABLE", + "name": "fog_ipc_replay_failures", + "type": "INT64" + }, + { + "description": "The number of times we tried to register shutdown flush routines for\ncontent child processes, and failed (probably because there was no main\nthread).\nAs a result there may be data loss from content child processes.\nLarge or rising number of clients experiencing this indicates we should\nperhaps refactor content child shutdown in FOG to try harder to register\nflush operations.\nWill likely be obsoleted by bug 1641989.\n", + "mode": "NULLABLE", + "name": "fog_ipc_shutdown_registration_failures", + "type": "INT64" + }, + { + "description": "Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites.\n", + "mode": "NULLABLE", + "name": "gfx_skipped_composites", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.cpu_time_bogus_values`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Duplicate of: `networking.os_socket_limit_reached`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Duplicate of: `power.total_cpu_time_ms`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Duplicate of: `pdfjs.used`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "mode": "NULLABLE", + "name": "glam_experiment_used", + "type": "INT64" + }, + { + "description": "The number of times we encountered an IO error\nwhen writing a pending ping to disk.\n", + "mode": "NULLABLE", + "name": "glean_error_io", + "type": "INT64" + }, + { + "description": "The number of tasks that overflowed the pre-initialization buffer.\nOnly sent if the buffer ever overflows.\n\nIn Version 0 this reported the total number of tasks enqueued.\n", + "mode": "NULLABLE", + "name": "glean_error_preinit_tasks_overflow", + "type": "INT64" + }, + { + "description": "The number of pings deleted after the quota\nfor the size of the pending pings directory or number of files is hit.\nSince quota is only calculated for the pending pings directory,\nand deletion request ping live in a different directory,\ndeletion request pings are never deleted.\n", + "mode": "NULLABLE", + "name": "glean_upload_deleted_pings_after_quota_hit", + "type": "INT64" + }, + { + "description": "How many pings were dropped because we found them already in-flight.\n", + "mode": "NULLABLE", + "name": "glean_upload_in_flight_pings_dropped", + "type": "INT64" + }, + { + "description": "How many ping upload responses did we not record as a success or failure\n(in `glean.upload.send_success` or `glean.upload.send_failue`,\nrespectively) due to an inconsistency in our internal bookkeeping?\n", + "mode": "NULLABLE", + "name": "glean_upload_missing_send_ids", + "type": "INT64" + }, + { + "description": "The total number of pending pings at startup.\nThis does not include deletion-request pings.\n", + "mode": "NULLABLE", + "name": "glean_upload_pending_pings", + "type": "INT64" + }, + { + "description": "On mobile, the number of times the application went to foreground.\n", + "mode": "NULLABLE", + "name": "glean_validation_foreground_count", + "type": "INT64" + }, + { + "description": "Record when a page requests canPlayType for a HLS media type.\n", + "mode": "NULLABLE", + "name": "hls_canplay_requested", + "type": "INT64" + }, + { + "description": "Record when a canPlayType request supports HLS.\n", + "mode": "NULLABLE", + "name": "hls_canplay_supported", + "type": "INT64" + }, + { + "description": "How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded", + "type": "INT64" + }, + { + "description": "How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_schemeless", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded", + "type": "INT64" + }, + { + "description": "Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again.\n", + "mode": "NULLABLE", + "name": "httpsfirst_upgraded_schemeless", + "type": "INT64" + }, + { + "description": "Tracks the number of times we need to fallback to restore metadata object by reading metadata-v2 file on disk when performing idle-maintenance on IDB database.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_fallback_fullrestore_metadata", + "type": "INT64" + }, + { + "description": "Counts the number of times we failed to load metadata object and had to restore it\n", + "mode": "NULLABLE", + "name": "idb_maintenance_metadata_restored", + "type": "INT64" + }, + { + "description": "Increments upon encountering an unknown metadata object when performing idle-maintenance on IDB database. During idle-maintenance, we iterate over idb directories/files and construct a metadata object by calling QuotaManager::GetOriginMetadata or LoadFullOriginMetadataWithRestore. It seems that in some cases, the metadata object we get here can be invalid and this metric is used to track those instances.\n", + "mode": "NULLABLE", + "name": "idb_maintenance_unknown_metadata", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully received. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_recv_cancel_counter", + "type": "INT64" + }, + { + "description": "Increments whenever a request cancellation message is successfully sent. This includes cancellations for requests related to either databases or observers.\n", + "mode": "NULLABLE", + "name": "localstorage_request_send_cancel_counter", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child.\n", + "mode": "NULLABLE", + "name": "ls_request_recv_cancellation", + "type": "INT64" + }, + { + "description": "Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver.\n", + "mode": "NULLABLE", + "name": "ls_request_send_cancellation", + "type": "INT64" + }, + { + "description": "How many emails were read by the user.", + "mode": "NULLABLE", + "name": "mail_mails_read", + "type": "INT64" + }, + { + "description": "The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count.\n", + "mode": "NULLABLE", + "name": "mathml_doc_count", + "type": "INT64" + }, + { + "description": "The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count.\n", + "mode": "NULLABLE", + "name": "media_element_in_page_count", + "type": "INT64" + }, + { + "description": "The number of times MKV content is detected as a source for media playback. This metric does not determine whether the MKV file is valid; it is simply a count based on the sniffed MIME type.\n", + "mode": "NULLABLE", + "name": "media_mkv_content_count", + "type": "INT64" + }, + { + "description": "Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader\n", + "mode": "NULLABLE", + "name": "netwerk_parent_connect_timeout", + "type": "INT64" + }, + { + "description": "Counts how often Entra SSO is used (macOS only).\n", + "mode": "NULLABLE", + "name": "network_sso_total_entra_uses", + "type": "INT64" + }, + { + "description": "Number of times the captive portal banner was displayed in this session. This metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_displayed.\n", + "mode": "NULLABLE", + "name": "networking_captive_portal_banner_displayed", + "type": "INT64" + }, + { + "description": "This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS).\n", + "mode": "NULLABLE", + "name": "networking_cookie_count_invalid_first_party_partitioned_in_db", + "type": "INT64" + }, + { + "description": "The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_attempts", + "type": "INT64" + }, + { + "description": "The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_pass_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the channel was blocked because it's a LNA load triggered by a tracker\n", + "mode": "NULLABLE", + "name": "networking_local_network_blocked_tracker", + "type": "INT64" + }, + { + "description": "Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false.\n", + "mode": "NULLABLE", + "name": "networking_os_socket_limit_reached", + "type": "INT64" + }, + { + "description": "Counts how often we find a cache folder that wasn't purged at shutdown by a background task process.\n", + "mode": "NULLABLE", + "name": "networking_residual_cache_folder_count", + "type": "INT64" + }, + { + "description": "This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption.\n", + "mode": "NULLABLE", + "name": "networking_set_cookie", + "type": "INT64" + }, + { + "description": "This counts the number of times we set an invalid first-party partitioned cookie.\n", + "mode": "NULLABLE", + "name": "networking_set_invalid_first_party_partitioned_cookie", + "type": "INT64" + }, + { + "description": "The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_cross_origin_opaque_response_count", + "type": "INT64" + }, + { + "description": "The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count.\n", + "mode": "NULLABLE", + "name": "opaque_response_blocking_javascript_validation_count", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the color of a highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_color_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user deletes highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_deleted", + "type": "INT64" + }, + { + "description": "Counts the number of times the user edits highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_edited", + "type": "INT64" + }, + { + "description": "Counts the number of times the user prints a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_print", + "type": "INT64" + }, + { + "description": "Counts the number of times the user saves a PDF with highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_save", + "type": "INT64" + }, + { + "description": "Counts the number of times the user changes the thickness of a free highlight.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness_changed", + "type": "INT64" + }, + { + "description": "Counts the number of times the user toggles the visibility of highlights.\n", + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_toggle_visibility", + "type": "INT64" + }, + { + "description": "How many times PDF Viewer was used.\n", + "mode": "NULLABLE", + "name": "pdfjs_used", + "type": "INT64" + }, + { + "description": "Record the removal of defective permissions.sqlite\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEFECTIVE_PERMISSIONS_SQL_REMOVED.\n", + "mode": "NULLABLE", + "name": "permissions_defective_sql_removed", + "type": "INT64" + }, + { + "description": "Record the permissions.sqlite init failure\nThis metric was generated to correspond to the Legacy Telemetry count histogram PERMISSIONS_SQL_CORRUPTED.\n", + "mode": "NULLABLE", + "name": "permissions_sql_corrupted", + "type": "INT64" + }, + { + "description": "Impossibly large CPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_cpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Impossibly large GPU time values that were discarded.\n", + "mode": "NULLABLE", + "name": "power_gpu_time_bogus_values", + "type": "INT64" + }, + { + "description": "Total CPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_cpu_time_ms", + "type": "INT64" + }, + { + "description": "Total GPU time used by all processes in ms.\n", + "mode": "NULLABLE", + "name": "power_total_gpu_time_ms", + "type": "INT64" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core.\n", + "mode": "NULLABLE", + "name": "power_total_thread_wakeups", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_opened_via_preview_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_dialog_via_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_cancelled_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm.\n", + "mode": "NULLABLE", + "name": "printing_preview_opened_tm", + "type": "INT64" + }, + { + "description": "A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print.\n", + "mode": "NULLABLE", + "name": "printing_silent_print", + "type": "INT64" + }, + { + "description": "Increments each time QuotaManager::RestoreDirectoryMetadata2 is called to restore origin directory metadata. This typically occurs when expected directory metadata is missing or needs to be regenerated. The counter is incremented regardless of whether the restoration ultimately succeeds or fails. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "mode": "NULLABLE", + "name": "quotamanager_restore_origin_directory_metadata_counter", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count", + "type": "INT64" + }, + { + "description": "The number of RTCRtpSenders created that use the compatibility mode for setParameters.\n", + "mode": "NULLABLE", + "name": "rtcrtpsender_count_setparameters_compat", + "type": "INT64" + }, + { + "description": "How many times we ended up recompiling a script from the script preloader on the main thread. This metric was generated to correspond to the Legacy Telemetry scalar script.preloader.mainthread_recompile.\n", + "mode": "NULLABLE", + "name": "script_preloader_mainthread_recompile", + "type": "INT64" + }, + { + "description": "How many SCT signature verifications are performed.\n", + "mode": "NULLABLE", + "name": "sct_signature_cache_total", + "type": "INT64" + }, + { + "description": "How many times the SmartBlock placeholders are shown on the page\n", + "mode": "NULLABLE", + "name": "security_ui_protectionspopup_smartblockembeds_shown", + "type": "INT64" + }, + { + "description": "The total number of successful TLS server certificate verifications.\n", + "mode": "NULLABLE", + "name": "tls_certificate_verifications", + "type": "INT64" + }, + { + "description": "The count of translation requests.\n", + "mode": "NULLABLE", + "name": "translations_requests_count", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot stage updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CANNOT_STAGE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_cannot_stage_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_external", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_notify", + "type": "INT64" + }, + { + "description": "Update: count of no updates were found for a background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_NO_UPDATE_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_check_no_update_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that have a last update time greater than the current time (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_INVALID_LASTUPDATETIME_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_invalid_lastupdatetime_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_external", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_notify", + "type": "INT64" + }, + { + "description": "Update: count of when getAppUpdateAutoEnabled from UpdateUtils.sys.mjs does not return the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_AUTO_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_auto_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.service.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_SERVICE_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_service_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_external", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_notify", + "type": "INT64" + }, + { + "description": "Update: count of when the app.update.staging.enabled boolean preference is not the default value of true (true values are not submitted)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_NOT_PREF_UPDATE_STAGING_ENABLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_not_pref_update_staging_enabled_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_ping_count_external", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_ping_count_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems for this ping for comparison with other pings (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_PING_COUNT_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_ping_count_subsequent", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that manually uninstalled the service (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_SERVICE_MANUALLY_UNINSTALLED_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_service_manually_uninstalled_subsequent", + "type": "INT64" + }, + { + "description": "Update: Count of the number of times we have shown a notification to the user that they need to manually update because we cannot write to the update status file.\n", + "mode": "NULLABLE", + "name": "update_state_write_failure", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_EXTERNAL.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_external", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_NOTIFY.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_notify", + "type": "INT64" + }, + { + "description": "Update: count of systems that cannot apply updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_UNABLE_TO_APPLY_SUBSEQUENT.\n", + "mode": "NULLABLE", + "name": "update_unable_to_apply_subsequent", + "type": "INT64" + }, + { + "description": "A count of how many \"pages\" were destroyed. Used to turn page use counters' counts into rates. Excludes pages that contain only documents for which we do not count use counters (See `Document::ShouldIncludeInTelemetry`).\n", + "mode": "NULLABLE", + "name": "use_counter_top_level_content_documents_destroyed", + "type": "INT64" + }, + { + "description": "Whether we saw a permission request from an insecure context.\n", + "mode": "NULLABLE", + "name": "web_notification_insecure_context_permission_request", + "type": "INT64" + }, + { + "description": "Number of push messages that were successfully decrypted and delivered to a ServiceWorker when required.\nThis metric was generated to correspond to the Legacy Telemetry count histogram PUSH_API_NOTIFY.\n", + "mode": "NULLABLE", + "name": "web_push_api_notify", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format.\n", + "mode": "NULLABLE", + "name": "web_push_declarative", + "type": "INT64" + }, + { + "description": "Number of push messages in the Declarative Web Push format with mutable: true.\n", + "mode": "NULLABLE", + "name": "web_push_declarative_mutable", + "type": "INT64" + }, + { + "description": "Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`.\n", + "mode": "NULLABLE", + "name": "web_push_detected_duplicated_message_ids", + "type": "INT64" + }, + { + "description": "Counts unsubscriptions triggered by ClearDataService.\n", + "mode": "NULLABLE", + "name": "web_push_unsubscribed_by_clearing_data", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_failure", + "type": "INT64" + }, + { + "description": "The number of client-side discoverable credentials (passkeys) created.", + "mode": "NULLABLE", + "name": "webauthn_create_passkey", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.create.", + "mode": "NULLABLE", + "name": "webauthn_create_success", + "type": "INT64" + }, + { + "description": "The total number of failed calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_failure", + "type": "INT64" + }, + { + "description": "The total number of successful calls to navigator.credentials.get.", + "mode": "NULLABLE", + "name": "webauthn_get_success", + "type": "INT64" + }, + { + "description": "Number of fonts loaded at page load\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBFONT_PER_PAGE.\n", + "mode": "NULLABLE", + "name": "webfont_per_page", + "type": "INT64" + }, + { + "description": "The number of successfully connected calls made during a session (discounting re-negotiations).\nThis metric was generated to correspond to the Legacy Telemetry count histogram WEBRTC_CALL_COUNT_3.\n", + "mode": "NULLABLE", + "name": "webrtc_call_count_3", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the client.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_client_handshake_started_counter", + "type": "INT64" + }, + { + "description": "The number of webrtc transports that have started a DTLS handshake as the server.\n", + "mode": "NULLABLE", + "name": "webrtcdtls_server_handshake_started_counter", + "type": "INT64" + }, + { + "description": "Tracking whether a DedicatedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram DEDICATED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_dedicated_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a ServiceWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SERVICE_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_service_worker_spawn_gets_queued", + "type": "INT64" + }, + { + "description": "Tracking whether a SharedWorker spawn gets queued due to hitting max workers per domain limit.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SHARED_WORKER_SPAWN_GETS_QUEUED.\n", + "mode": "NULLABLE", + "name": "workers_shared_worker_spawn_gets_queued", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "A list of known accessibility clients that inject into Firefox process space (see https://searchfox.org/mozilla-central/source/accessible/windows/msaa/Compatibility.h).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram A11Y_CONSUMERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_consumers", + "type": "RECORD" + }, + { + "description": "Application reputation local results (0=ALLOW, 1=BLOCK, 2=NONE)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_local", + "type": "RECORD" + }, + { + "description": "Status of the application reputation remote lookup (0=OK, 1=failed, 2=invalid protobuf response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server", + "type": "RECORD" + }, + { + "description": "Application reputation remote verdict (0=SAFE, 1=DANGEROUS, 2=UNCOMMON, 3=POTENTIALLY_UNWANTED, 4=DANGEROUS_HOST, 5=UNKNOWN)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APPLICATION_REPUTATION_SERVER_VERDICT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_server_verdict", + "type": "RECORD" + }, + { + "description": "Input device that triggered the zoom gesture (InputData::PinchGestureSource)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram APZ_ZOOM_PINCHSOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "apz_zoom_pinchsource", + "type": "RECORD" + }, + { + "description": "Number of bounce trackers purged successfully per scheduled purge.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_num_hosts_per_purge_run", + "type": "RECORD" + }, + { + "description": "Does enforcing a larger minimum RSA key size cause verification failures? 1 = no, 2 = yes, 3 = another error prevented finding a verified chain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_CHAIN_KEY_SIZE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_chain_key_size_status", + "type": "RECORD" + }, + { + "description": "EV status of a certificate, recorded on each TLS connection. 0=invalid, 1=DV, 2=EV\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_EV_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_ev_status", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_FAILURES_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca", + "type": "RECORD" + }, + { + "description": "Pinning failures by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_failures_by_ca_2", + "type": "RECORD" + }, + { + "description": "Certificate pinning results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_results_by_host", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results by host for Mozilla operational sites\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_PINNING_MOZ_TEST_RESULTS_BY_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_pinning_moz_test_results_by_host", + "type": "RECORD" + }, + { + "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_HTTP_REQUEST_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_http_request_result", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CERT_VALIDATION_SUCCESS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca", + "type": "RECORD" + }, + { + "description": "Successful SSL server cert validations by CA (see KnownRootHashes.txt for names of CAs).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_validation_success_by_ca_2", + "type": "RECORD" + }, + { + "description": "Records the cookie behavior pref at startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram COOKIE_BEHAVIOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_cookie_behavior", + "type": "RECORD" + }, + { + "description": "If query params get stripped, how many per navigation/redirect.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QUERY_STRIPPING_PARAM_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_query_stripping_param_count", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per storage access permissions, in days (one record per permission, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram STORAGE_ACCESS_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_storage_access_remaining_days", + "type": "RECORD" + }, + { + "description": "The decrease in the length of the URL when strip on share is used, only if at least one parameter is stripped\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STRIP_ON_SHARE_LENGTH_DECREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_length_decrease", + "type": "RECORD" + }, + { + "description": "The number of query parameters removed, if any, when strip on share is used\nThis metric was generated to correspond to the Legacy Telemetry linear histogram STRIP_ON_SHARE_PARAMS_REMOVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_strip_on_share_params_removed", + "type": "RECORD" + }, + { + "description": "Status of the shield icon for each top-level pageload (outside of Private Browsing mode) when tracking protection is enabled (0 = there was a page load, this is used as a baseline, 1 = shield crossed out because CB was disabled on this page by the user, 2 = shield shown because some content was blocked)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRACKING_PROTECTION_SHIELD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "contentblocking_tracking_protection_shield", + "type": "RECORD" + }, + { + "description": "The number of origins that were purged during one run of cookie purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_ORIGINS_PURGED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_origins_purged", + "type": "RECORD" + }, + { + "description": "The number of trackers that had user interaction at the time of purging.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_TRACKERS_WITH_USER_INTERACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_with_user_interaction", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_collected", + "type": "RECORD" + }, + { + "description": "Percent of cycle collector slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CYCLE_COLLECTOR_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "Number of objects collected by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_COLLECTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_collected", + "type": "RECORD" + }, + { + "description": "Number of JS objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_GCED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_gced", + "type": "RECORD" + }, + { + "description": "Number of ref counted objects visited by the cycle collector in a worker\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER_VISITED_REF_COUNTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_visited_ref_counted", + "type": "RECORD" + }, + { + "description": "The number of edges serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_edge_count", + "type": "RECORD" + }, + { + "description": "The number of nodes serialized into a heap snapshot.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_heap_snapshot_node_count", + "type": "RECORD" + }, + { + "description": "On page load, record the number of CSS Grid elements present on a page when the DevTools is open\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DEVTOOLS_NUMBER_OF_CSS_GRIDS_IN_A_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_number_of_css_grids_in_a_page", + "type": "RECORD" + }, + { + "description": "Records DevTools toolbox host each time the toolbox is opened and when the host is changed (0:Bottom, 1:RIGHT, 2:WINDOW, 3:CUSTOM, 4:LEFT, 5:PAGE, 9:Unknown).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVTOOLS_TOOLBOX_HOST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_host", + "type": "RECORD" + }, + { + "description": "The number of unusable addresses reported for each record\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DNS_BLACKLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_blocklist_count", + "type": "RECORD" + }, + { + "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_LOOKUP_METHOD2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_lookup_method", + "type": "RECORD" + }, + { + "description": "Percent of the cycle collector's forget skippable done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_during_idle", + "type": "RECORD" + }, + { + "description": "Number of forget skippables occurred during a minute\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FORGET_SKIPPABLE_FREQUENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_forget_skippable_frequency", + "type": "RECORD" + }, + { + "description": "Percent of GC slice done during idle time\nThis metric was generated to correspond to the Legacy Telemetry linear histogram GC_SLICE_DURING_IDLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_slice_during_idle", + "type": "RECORD" + }, + { + "description": "Amount of time (keyed by addon id) that an event page has been running before being suspended,\nor the entire addon shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_event_page_running_time", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_count", + "type": "RECORD" + }, + { + "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DWRITEFONT_INIT_PROBLEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_init_problem", + "type": "RECORD" + }, + { + "description": "Whether the user is in safe mode (No, Yes, Forced)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SAFE_MODE_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gecko_safe_mode_usage", + "type": "RECORD" + }, + { + "description": "When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_document_site_origins", + "type": "RECORD" + }, + { + "description": "When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_per_document_site_origins", + "type": "RECORD" + }, + { + "description": "Accuracy returned by the Geolocation API\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geolocation_accuracy", + "type": "RECORD" + }, + { + "description": "The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_peak_pixel_count", + "type": "RECORD" + }, + { + "description": "An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of \"worse\". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_severity", + "type": "RECORD" + }, + { + "description": "Time to do swap/present/commit in 100 microseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_SWAP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_swap_time", + "type": "RECORD" + }, + { + "description": "Failed to create a gfx content device. 0=content d3d11, 1=image d3d11, 2=d2d1.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_failed_to_acquire_device", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_paint", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_from_vsync", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_with_svg", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_resource_upload", + "type": "RECORD" + }, + { + "description": "The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_frame_time_without_upload", + "type": "RECORD" + }, + { + "description": "Graphics Crash Reason (...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GFX_CRASH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_crash", + "type": "RECORD" + }, + { + "description": "GPU Device Reset Reason (ok, hung, removed, reset, internal error, invalid call, out of memory)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Scaling percentage for the display where the first window is opened\nThis metric was generated to correspond to the Legacy Telemetry linear histogram DISPLAY_SCALING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_display_scaling", + "type": "RECORD" + }, + { + "description": "GPU Forced Device Reset Reason (OpenSharedHandle)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FORCED_DEVICE_RESET_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_forced_device_reset_reason", + "type": "RECORD" + }, + { + "description": "Reports whether or not graphics drivers crashed during startup.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_DRIVER_STARTUP_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_graphics_driver_startup_test", + "type": "RECORD" + }, + { + "description": "Reports results from the graphics sanity test to track which drivers are having problems (0=TEST_PASSED, 1=TEST_FAILED_RENDER, 2=TEST_FAILED_VIDEO, 3=TEST_CRASHED)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram GRAPHICS_SANITY_TEST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_sanity_test", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Ratio of bytes evicted to bytes added (* 100)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_ratio_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of items removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_ELEMENTS_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_elements_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak number of items in the dynamic table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_COUNT_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_count_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times a connection is blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of dropped datagrams.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_DROP_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_drop_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LOSS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of saved datagrams that are waiting for keys to be available.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SAVED_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_saved_dgrams", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times when a stream is blocked by the flow control while sendnig data.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_TRANS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_sending_blocked_by_flow_control_per_trans", + "type": "RECORD" + }, + { + "description": "HTTP3: number of transactions that are blocked by maximum allowed number of parallel streams per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_BLOCKED_BY_STREAM_LIMIT_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_blocked_by_stream_limit_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP3: number of times streams are blocked by the flow control while sending data per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TRANS_SENDING_BLOCKED_BY_FLOW_CONTROL_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_trans_sending_blocked_by_flow_control_per_conn", + "type": "RECORD" + }, + { + "description": "How many alt-svc productions were seen in a single Alt-Svc header\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_ALTSVC_ENTRIES_PER_HEADER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_altsvc_entries_per_header", + "type": "RECORD" + }, + { + "description": "Channel Disposition: 0=Cancel, 1=Disk, 2=NetOK, 3=NetEarlyFail, 4=NetlateFail, +8 for HTTPS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_DISPOSITION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_channel_disposition", + "type": "RECORD" + }, + { + "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli, 4=zstd\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONTENT_ENCODING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_content_encoding", + "type": "RECORD" + }, + { + "description": "The reason why we failed to connect with an HTTPSSVC record\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_CONNECTION_FAILED_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_connection_failed_reason", + "type": "RECORD" + }, + { + "description": "Record at which stage an HTTPSSVC record is received\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNS_HTTPSSVC_RECORD_RECEIVING_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dns_httpssvc_record_receiving_stage", + "type": "RECORD" + }, + { + "description": "I want to be tracked, I do NOT want to be tracked, DNT unset\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DNT_USAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_dnt_usage", + "type": "RECORD" + }, + { + "description": "HTTP Proxy Type (none, http, socks)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_PROXY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_proxy_type", + "type": "RECORD" + }, + { + "description": "HTTP: requests per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_CONN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_conn", + "type": "RECORD" + }, + { + "description": "HTTP: Requests per page (count)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_REQUEST_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page", + "type": "RECORD" + }, + { + "description": "HTTP: Requests serviced from cache (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_REQUEST_PER_PAGE_FROM_CACHE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_request_per_page_from_cache", + "type": "RECORD" + }, + { + "description": "HTTP: Protocol Version Used on Response from nsHttp.h\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_RESPONSE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_response_version", + "type": "RECORD" + }, + { + "description": "Does a response has a h3(1), other quic(2) or non(0) alt-protocol advertisement.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_SAW_QUIC_ALT_PROTOCOL_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_saw_quic_alt_protocol", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was possible: 0 - not possible, 1 - possible but not used, 2 - possible and used.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_EARLY_DATA_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_FAILED\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_ECH_FAILED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_ech_failed_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of other error\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_OTHERS_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_others_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITH_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITH_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_with_ech_count", + "type": "RECORD" + }, + { + "description": "When echConfig is enabled, number of times a transaction is retried because of SSL_ERROR_ECH_RETRY_WITHOUT_ECH\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_ECH_RETRY_WITHOUT_ECH_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_ech_retry_without_ech_count", + "type": "RECORD" + }, + { + "description": "The reason why a HTTP transaction is restarted.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_TRANSACTION_RESTART_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_restart_reason", + "type": "RECORD" + }, + { + "description": "Number of chunks per decode attempt\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_CHUNKS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_chunks", + "type": "RECORD" + }, + { + "description": "Decode count\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_count", + "type": "RECORD" + }, + { + "description": "GC effectiveness, the amount of memory freed divided by main-thread collection time (MB/s)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_effectiveness", + "type": "RECORD" + }, + { + "description": "The number of objects marked per ms during GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_rate", + "type": "RECORD" + }, + { + "description": "Minimum percentage of time spent outside GC over any 50ms window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mmu_50", + "type": "RECORD" + }, + { + "description": "The percentage of nursery objects that were promoted to the tenured heap.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_promotion_rate", + "type": "RECORD" + }, + { + "description": "Number of interruptions/donations per slice during parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_interruptions", + "type": "RECORD" + }, + { + "description": "Ratio of total helper thread time spent marking to main thread time for parallel marking, scaled by 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_speedup", + "type": "RECORD" + }, + { + "description": "Ratio of helper thread time spent marking to total helper thread time for parallel marking.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_parallel_mark_utilization", + "type": "RECORD" + }, + { + "description": "How many allocation sites were selected for pretenuring by a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_pretenure_count", + "type": "RECORD" + }, + { + "description": "The number of slices in an incremental GC for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_count", + "type": "RECORD" + }, + { + "description": "The percentage of tenured GC things that survived a collection.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_tenured_survival_rate", + "type": "RECORD" + }, + { + "description": "Total number of GC zones\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zone_count", + "type": "RECORD" + }, + { + "description": "Number of zones collected in a zone GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_zones_collected", + "type": "RECORD" + }, + { + "description": "Number of bytes recovered by compaction.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mail_compact_bytes_recovered", + "type": "RECORD" + }, + { + "description": "Counts the number of entries in the sample description box (stsd) for a track in an mp4. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MEDIA_MP4_PARSE_NUM_SAMPLE_DESCRIPTION_ENTRIES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_mp4_parse_num_sample_description_entries", + "type": "RECORD" + }, + { + "description": "Ratio of compositor dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_COMPOSITOR_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_compositor_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of decoder dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_DECODED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_decoded_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Percentage of frames decoded frames dropped between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_DROPPED_FRAMES_PROPORTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion", + "type": "RECORD" + }, + { + "description": "Ratio of dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Ratio of sink dropped frames per total decoded frames scaled by 10,000 between starting and stopping a video\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_DROPPED_SINK_FRAMES_PROPORTION_EXPONENTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_dropped_sink_frames_proportion_exponential", + "type": "RECORD" + }, + { + "description": "Number of ghost windows\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GHOST_WINDOWS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_ghost_windows", + "type": "RECORD" + }, + { + "description": "Fraction of committed heap memory that is overhead (percentage).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_HEAP_OVERHEAD_FRACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_overhead_fraction", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript compartments used for web pages\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_COMPARTMENTS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_compartments_user", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for add-ons and internals.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_SYSTEM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_system", + "type": "RECORD" + }, + { + "description": "Total JavaScript realms used for web pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_REALMS_USER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_realms_user", + "type": "RECORD" + }, + { + "description": "Number of low-physical-memory events fired since last ping\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOW_MEMORY_EVENTS_PHYSICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_low_memory_events_physical", + "type": "RECORD" + }, + { + "description": "Hard page faults (since last telemetry ping)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAGE_FAULTS_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_page_faults_hard", + "type": "RECORD" + }, + { + "description": "Number of PHC slots currently allocated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_allocated", + "type": "RECORD" + }, + { + "description": "Number of PHC slots allocated-then-freed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOTS_FREED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slots_freed", + "type": "RECORD" + }, + { + "description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_HSTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_hsts", + "type": "RECORD" + }, + { + "description": "Accumulates type of content per page load (0=no mixed or non-secure page, 1=mixed passive, 2=mixed active, 3=mixed passive and mixed active)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_PAGE_LOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_page_load", + "type": "RECORD" + }, + { + "description": "A simple counter of daily mixed-content unblock operations and top documents loaded\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram MIXED_CONTENT_UNBLOCK_COUNTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mixed_content_unblock_counter", + "type": "RECORD" + }, + { + "description": "Collect the content policy when the resource is non-local and suspended by back pressure (0-44 from nsContentPolicyType in nsIContentPolicy.idl).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_BACK_PRESSURE_SUSPENSION_CP_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_cp_type", + "type": "RECORD" + }, + { + "description": "Maximum number of concurrent threads reached during a given download session\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram BACKGROUNDFILESAVER_THREAD_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_backgroundfilesaver_thread_count", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileInputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_INPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_input_stream_status", + "type": "RECORD" + }, + { + "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_v2_output_stream_status", + "type": "RECORD" + }, + { + "description": "Reuse count of an HTTP cache entry warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry linear histogram HTTP_CACHE_ENTRY_REUSE_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reuse_count", + "type": "RECORD" + }, + { + "description": "Network identification (0=None, 1=New Ipv4, 2=Same, 3=New IPv6, 4=New dual)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_ID2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_id", + "type": "RECORD" + }, + { + "description": "Count the number of 0) successful connections to an ipv4 address, 1) failed connection an ipv4 address, 2) successful connection to an ipv6 address and 3) failed connections to an ipv6 address.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram IPV4_AND_IPV6_ADDRESS_CONNECTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_ipv4_and_ipv6_address_connectivity", + "type": "RECORD" + }, + { + "description": "Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_early_data_bytes_written", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_access_fixup_diff", + "type": "RECORD" + }, + { + "description": "The number of cookie bytes exceeding chips partition limit capacity for a single partition\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_chips_partition_limit_overflow", + "type": "RECORD" + }, + { + "description": "A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_part_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of partitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_partitioned", + "type": "RECORD" + }, + { + "description": "Reports the total number of cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_total", + "type": "RECORD" + }, + { + "description": "A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpart_by_key", + "type": "RECORD" + }, + { + "description": "Reports the number of unpartitioned cookies in storage\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_count_unpartitioned", + "type": "RECORD" + }, + { + "description": "If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_creation_fixup_diff", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_entry_max", + "type": "RECORD" + }, + { + "description": "A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cookie_purge_max", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/1.0 and http/1.1 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_1_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/2 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_2_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_100", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_download_throughput_50_100", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_received", + "type": "RECORD" + }, + { + "description": "HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_ecn_ce_ect0_ratio_sent", + "type": "RECORD" + }, + { + "description": "HTTP3: packet loss ratio (multiply by 10000).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_loss_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious congestion event to loss induced congestion event ratio (10000 scaling factor).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_spurious_congestion_event_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP number of segments per datagram sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segments_sent", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_100", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_10_50", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 1MB and 10MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_1_10", + "type": "RECORD" + }, + { + "description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_upload_throughput_50_100", + "type": "RECORD" + }, + { + "description": "port used for local network access\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_local_network_access_port", + "type": "RECORD" + }, + { + "description": "The thickness used to draw a free highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_editing_highlight_thickness", + "type": "RECORD" + }, + { + "description": "Time spent to display first page in PDF Viewer (ms).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pdfjs_time_to_view", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in items\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_items", + "type": "RECORD" + }, + { + "description": "Records how many percent of battery was available for each period of user activity.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "power_battery_percentage_when_user_active", + "type": "RECORD" + }, + { + "description": "The base confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_BASE_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_base_confidence", + "type": "RECORD" + }, + { + "description": "The final confidence calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_CONFIDENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_confidence", + "type": "RECORD" + }, + { + "description": "The global degradation calculated\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_GLOBAL_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_global_degradation", + "type": "RECORD" + }, + { + "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_ATTEMPTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_attempts", + "type": "RECORD" + }, + { + "description": "How many prediction calculations are performed\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICTIONS_CALCULATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predictions_calculated", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource was eligible for future prefetch (or not). See PrefetchDecisionReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_DECISION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_decision_reason", + "type": "RECORD" + }, + { + "description": "Why the predictor determined a particular resource that was marked eligible for prefetch should not be prefetched. See PrefetchIgnoreReason in Predictor.cpp for value meanings\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PREDICTOR_PREFETCH_IGNORE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_ignore_reason", + "type": "RECORD" + }, + { + "description": "The degradation calculated for a subresource\nThis metric was generated to correspond to the Legacy Telemetry linear histogram PREDICTOR_SUBRESOURCE_DEGRADATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_subresource_degradation", + "type": "RECORD" + }, + { + "description": "How many actual preconnects happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRECONNECTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preconnects", + "type": "RECORD" + }, + { + "description": "How many actual predictions (preresolves, preconnects, ...) happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREDICTIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_predictions", + "type": "RECORD" + }, + { + "description": "How many actual prefetches happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PREFETCHES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_prefetches", + "type": "RECORD" + }, + { + "description": "How many actual preresolves happen\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_TOTAL_PRERESOLVES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_total_preresolves", + "type": "RECORD" + }, + { + "description": "The safety of a page where we see a password field. (0: safe page & safe submit; 1: safe page & unsafe submit; 2: safe page & unknown submit; 3: unsafe page & safe submit; 4: unsafe page & unsafe submit; 5: unsafe page & unknown submit)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_LOGIN_PAGE_SAFETY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_login_page_safety", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for creating a login. (0=Prompt displayed [always recorded], 1=Add login, 2=Don't save now, 3=Never save)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_REMEMBER_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_remember_action", + "type": "RECORD" + }, + { + "description": "Action taken by user through prompt for modifying a login. (0=Prompt displayed [always recorded], 1=Update login, 2=Don't update, 3=Remove saved login)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram PWMGR_PROMPT_UPDATE_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_prompt_update_action", + "type": "RECORD" + }, + { + "description": "Logs the number of non-persisted origins that have zero quota-charged usage after full temporary storage initialization. These origins do not store any real data but still contribute to internal bookkeeping by having directories and files created on disk, which can unnecessarily increase initialization costs. Measuring how many such origins exist in the wild helps evaluate whether the temporary storage cleanup logic should be updated to clear them. This in turn can guide potential optimizations and improve the performance of temporary storage initialization over time, while also helping to detect unexpected regressions. Note: Non-persisted origins can be cleared when they have no data, while persisted origins cannot be cleared even at zero usage because the persisted flag is currently stored alongside the origin data and would be lost.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins", + "type": "RECORD" + }, + { + "description": "The result of trying to download a document to show in reader view (0=Success, 1=Error XHR, 2=Error no document)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_DOWNLOAD_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_download_result", + "type": "RECORD" + }, + { + "description": "The result of trying to parse a document to show in reader view (0=Success, 1=Error too many elements, 2=Error in worker, 3=Error no article)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram READER_MODE_PARSE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "readermode_parse_result", + "type": "RECORD" + }, + { + "description": "Result of XHR request fetching the country-code. 0=SUCCESS, 1=SUCCESS_WITHOUT_DATA, 2=XHRTIMEOUT, 3=ERROR (rest reserved for finer-grained error codes later)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SEARCH_SERVICE_COUNTRY_FETCH_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_result", + "type": "RECORD" + }, + { + "description": "Battery level when discharging and the wake lock was released\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SCREENWAKELOCK_RELEASE_BATTERY_LEVEL_DISCHARGING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_release_battery_level_discharging", + "type": "RECORD" + }, + { + "description": "Records the result of App Signature Verification. See the comments in OpenSignedAppFile.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram ADDON_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_addon_signature_verification_status", + "type": "RECORD" + }, + { + "description": "What was the result of the content signature verification? 0=valid, 1=invalid, 2=noCertChain, 3=createContextFailedWithOtherError, 4=expiredCert, 5=certNotValidYet, 6=buildCertChainFailed, 7=eeCertForWrongHost, 8=extractKeyError, 9=vfyContextError\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CONTENT_SIGNATURE_VERIFICATION_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_content_signature_verification_status", + "type": "RECORD" + }, + { + "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NTLM_MODULE_USED_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ntlm_module_used", + "type": "RECORD" + }, + { + "description": "The counter of each referrer policy which has been computed for a referrer. The buckets (0-8) are for same-site requests and buckets (9-17) are for cross-site requests. Note that the index matches to the order in ReferrerPolicy.webidl\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram REFERRER_POLICY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_referrer_policy_count", + "type": "RECORD" + }, + { + "description": "Security-related UI events (addons, form submission, TLS certs, Safe Browsing, updates and geolocation). See /security/manager/ssl/nsISecurityUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SECURITY_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "security_ui_events", + "type": "RECORD" + }, + { + "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_LOCAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_local", + "type": "RECORD" + }, + { + "description": "H2: goaway reason from peer from rfc 7540. 31 is none received.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SPDY_GOAWAY_PEER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_goaway_peer", + "type": "RECORD" + }, + { + "description": "SPDY: Streams concurrent active per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_PARALLEL_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_parallel_streams", + "type": "RECORD" + }, + { + "description": "SPDY: Streams created per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_REQUEST_PER_CONN_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_request_per_conn", + "type": "RECORD" + }, + { + "description": "SPDY: Streams received per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SERVER_INITIATED_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_server_initiated_streams", + "type": "RECORD" + }, + { + "description": "H2: Settings Max Streams parameter\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_MAX_STREAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_max_streams", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_ratio", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Ratio (lower better)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SPDY_SYN_REPLY_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_ratio", + "type": "RECORD" + }, + { + "description": "SSL Authentication Algorithm (null=0, rsa(KEA)=1, ecdsa=4, rsa(sign)=7) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_algorithm_full", + "type": "RECORD" + }, + { + "description": "ECDSA signature curve for TLS_*_ECDSA_* in full handshake (23=P-256, 24=P-384, 25=P-521)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_ECDSA_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_ecdsa_curve_full", + "type": "RECORD" + }, + { + "description": "RSA signature key size for TLS_*_RSA_* in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_AUTH_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_auth_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "Was a certificate error overridden on this handshake? What was it? (0=unknown error (indicating bug), 1=no, >1=a specific error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "If certificate verification failed in a TLS handshake, what was the error? (see MapCertErrorToProbeValue in security/manager/ssl/SSLServerCertVerification.cpp and the values in security/pkix/include/pkix/Result.h)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CERT_VERIFICATION_ERRORS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_cert_verification_errors", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See https://searchfox.org/mozilla-central/source/security/manager/ssl/RootHashes.inc for names of CAs. Bucket zero holds CAs not present in the list.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca", + "type": "RECORD" + }, + { + "description": "Number of successfully established TLS connections NOT compliant with the Certificate Transparency Policy, by CA. See KnownRootHashes.txt for names of CAs. range_min: 0\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ct_policy_non_compliant_connections_by_ca_2", + "type": "RECORD" + }, + { + "description": "Type of handshake (1=resumption, 2=false started, 3=chose not to false start, 4=not allowed to false start)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_completed", + "type": "RECORD" + }, + { + "description": "0th bit - TLS13 used? 1th bit - Revocation Privacy, 2nd bit - DNS Privacy, 3rd bit - ECH Privacy\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_PRIVACY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_privacy", + "type": "RECORD" + }, + { + "description": "SSL handshake result, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result", + "type": "RECORD" + }, + { + "description": "SSL handshake result for conservative mode connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_conservative", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH 'Real', 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech", + "type": "RECORD" + }, + { + "description": "SSL handshake result for connections which used ECH GREASE, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_ech_grease", + "type": "RECORD" + }, + { + "description": "SSL handshake result for first-try connections, 0=success, 1-255=NSS error offset, 256-511=SEC error offset + 256, 512-639=NSPR error offset + 512, 640-670=PKIX error, 671=unknown err\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_RESULT_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_result_first_try", + "type": "RECORD" + }, + { + "description": "Negotiated SSL Version (1=tls1, 2=tls1.1, 3=tls1.2, 4=tls1.3)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_HANDSHAKE_VERSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_handshake_version", + "type": "RECORD" + }, + { + "description": "DHE KEA (TLS_DHE_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_DHE_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_dhe_key_size_full", + "type": "RECORD" + }, + { + "description": "ECDHE KEA (TLS_ECDHE_*) curve (23=P-256, 24=P-384, 25=P-521, 29=Curve25519) in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_ECDHE_CURVE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_ecdhe_curve_full", + "type": "RECORD" + }, + { + "description": "RSA KEA (TLS_RSA_*) key size in full handshake\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEA_RSA_KEY_SIZE_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_kea_rsa_key_size_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_full", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm for resumed handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_KEY_EXCHANGE_ALGORITHM_RESUMED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_key_exchange_algorithm_resumed", + "type": "RECORD" + }, + { + "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_NPN_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_npn_type", + "type": "RECORD" + }, + { + "description": "Status of OCSP stapling on this handshake (1=present, good; 2=none; 3=present, expired; 4=present, other error)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_OCSP_STAPLING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_ocsp_stapling", + "type": "RECORD" + }, + { + "description": "How many permanent certificate overrides a user has stored.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_PERMANENT_CERT_ERROR_OVERRIDES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_permanent_cert_error_overrides", + "type": "RECORD" + }, + { + "description": "Bitmask of reasons we did not false start when libssl would have let us (see key in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_REASONS_FOR_NOT_FALSE_STARTING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_reasons_for_not_false_starting", + "type": "RECORD" + }, + { + "description": "Histogram of the number of Signed Certificate Timestamps from tiled logs per TLS connection from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs from tiled logs were received, or none were extracted due to parsing errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_from_tiled_logs_per_connection", + "type": "RECORD" + }, + { + "description": "Origin of Signed Certificate Timestamps received (1=Embedded, 2=TLS handshake extension, 3=Stapled OCSP response)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_ORIGIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_origin", + "type": "RECORD" + }, + { + "description": "Histogram of Signed Certificate Timestamps per SSL connection, from all sources (embedded / OCSP Stapling / TLS handshake). Bucket 0 counts the cases when no SCTs were received, or none were extracted due to parsing errors.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_SCTS_PER_CONNECTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_per_connection", + "type": "RECORD" + }, + { + "description": "Verification status of Signed Certificate Timestamps received (0=Decoding error, 1=Valid SCT, 2=SCT from unknown log, 3=Invalid SCT signature, 4=SCT timestamp is in the future, 5=Valid SCT from a disqualified log 6=SCT timestamp is after the root's distrustAfter time).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_scts_verification_status", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.0 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS10_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls10_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.1 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS11_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls11_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.2 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS12_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls12_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, after considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_POST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_post", + "type": "RECORD" + }, + { + "description": "Potential TLS 1.3 intolerance, before considering historical info (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_TLS13_INTOLERANCE_REASON_PRE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_tls13_intolerance_reason_pre", + "type": "RECORD" + }, + { + "description": "TLS/SSL version intolerance was falsely detected, server rejected handshake (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SSL_VERSION_FALLBACK_INAPPROPRIATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_version_fallback_inappropriate", + "type": "RECORD" + }, + { + "description": "Number of desktop devices (including this device) associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_DESKTOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_desktop", + "type": "RECORD" + }, + { + "description": "Number of mobile devices associated with this Sync account. Recorded each time Sync successfully completes the 'clients' engine.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEAVE_DEVICE_COUNT_MOBILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sync_device_count_mobile", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.sys.mjs)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_done_reason_2", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_queue_size_on_capture", + "type": "RECORD" + }, + { + "description": "How many timers were processed in a single wake-up of the Timer Thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timer_thread_timers_fired_per_wakeup", + "type": "RECORD" + }, + { + "description": "Negotiated cipher suite in TLS handshake (see key in AccumulateCipherSuite in nsNSSCallbacks.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TLS_CIPHER_SUITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "tls_cipher_suite", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a complete update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_complete", + "type": "RECORD" + }, + { + "description": "Update: Result code from downloading a partial update via BITS\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_BITS_RESULT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_bits_result_partial", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_external", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_notify", + "type": "RECORD" + }, + { + "description": "Update: background update check result code except for no updates found (after we already have an update ready). Possible codes are enumerated by constants starting with CHK_ in toolkit/mozapps/update/UpdateTelemetry.sys.mjs\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_CHECK_CODE_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_check_code_subsequent", + "type": "RECORD" + }, + { + "description": "Update: complete patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_COMPLETE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_complete", + "type": "RECORD" + }, + { + "description": "Update: partial patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_partial", + "type": "RECORD" + }, + { + "description": "Update: unknown patch type download result code\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_DOWNLOAD_CODE_UNKNOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_download_code_unknown", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update service errors greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_SERVICE_ERRORS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_service_errors_subsequent", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_external", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_notify", + "type": "RECORD" + }, + { + "description": "Update: number of sequential update elevation request cancelations greater than 0 (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_PREF_UPDATE_CANCELATIONS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_pref_update_cancelations_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a complete update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of a partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the state of an unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATE_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_state_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed complete patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_COMPLETE_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_complete_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed partial patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_PARTIAL_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_partial_startup", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status after staging\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_stage", + "type": "RECORD" + }, + { + "description": "Update: the status error code for a failed unknown patch update from update.status on startup\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram UPDATE_STATUS_ERROR_CODE_UNKNOWN_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_status_error_code_unknown_startup", + "type": "RECORD" + }, + { + "description": "SafeBrowsing v4 hash completion error (0 = success, 1 = parsing failure, 2 = unknown threat type)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETION_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_completion_error", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while sending a Safe Browsing ThreatHit report. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused, 11=partial transfer, 12=inadequate security, 13=unknown host, 14=dns lookup queue full, 15=unknown proxy host)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from Safe Browsing ThreatHit report. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_THREATHIT_REMOTE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_threathit_remote_status", + "type": "RECORD" + }, + { + "description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UI_EVENTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_ui_events", + "type": "RECORD" + }, + { + "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_ALG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_alg", + "type": "RECORD" + }, + { + "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBCRYPTO_METHOD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webcrypto_method", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff", + "type": "RECORD" + }, + { + "description": "Compression ratio of WOFF2 data (%)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_COMPRESSION_WOFF2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_compression_woff2", + "type": "RECORD" + }, + { + "description": "Font format type (woff/woff2/ttf/...)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_FONTTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_fonttype", + "type": "RECORD" + }, + { + "description": "Font src type loaded (1 = local, 2 = url, 3 = data)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBFONT_SRCTYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_srctype", + "type": "RECORD" + }, + { + "description": "Locally measured data rate on inbound audio (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound audio (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound audio (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "Type of call: (Bitmask) Audio = 1, Video = 2, DataChannels = 4\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_CALL_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_type", + "type": "RECORD" + }, + { + "description": "Type for media in getUserMedia calls (0=Camera, 1=Screen, 2=Application, 3=Window, 4=Browser, 5=Microphone, 6=AudioCapture, 7=Other)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBRTC_GET_USER_MEDIA_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_get_user_media_type", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Audio tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_AUDIO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_audio_send_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks received simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_RECEIVE_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_receive_track", + "type": "RECORD" + }, + { + "description": "Number of Video tracks sent simultaneously\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_MAX_VIDEO_SEND_TRACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_max_video_send_track", + "type": "RECORD" + }, + { + "description": "Number of Renegotiations during each call\nThis metric was generated to correspond to the Legacy Telemetry linear histogram WEBRTC_RENEGOTIATIONS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_renegotiations", + "type": "RECORD" + }, + { + "description": "Video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Video decoder's number of discarded packets (in packets/min) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_discarded_packets_per_call_ppm", + "type": "RECORD" + }, + { + "description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video decoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_decoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_avg_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_bitrate_std_dev_per_call_kbps", + "type": "RECORD" + }, + { + "description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_10x_std_dev_per_call", + "type": "RECORD" + }, + { + "description": "Video encoder's average framerate (in fps) over an entire call\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_encoder_framerate_avg_per_call", + "type": "RECORD" + }, + { + "description": "Locally measured data rate of inbound video (kbit/s). Computed every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_bandwidth_kbits", + "type": "RECORD" + }, + { + "description": "Locally measured packet loss on inbound video (permille). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "RTCP-reported packet loss by remote recipient of outbound video (permille). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_packetloss_rate", + "type": "RECORD" + }, + { + "description": "SSL Handshake Key Exchange Algorithm (null=0, rsa=1, dh=2, ecdh=4, ecdh_hybrid=8)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtcdtls_key_exchange_algorithm", + "type": "RECORD" + }, + { + "description": "Websockets Handshake Results (ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy, wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram WEBSOCKETS_HANDSHAKE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "websockets_handshake_type", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Keep track of the last time the \"addons-bloomfilters\" remotesetting blocklist has been successfully updated.\n", + "mode": "NULLABLE", + "name": "blocklist_last_modified_rs_addons_mblf", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_generation_time", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the most recent stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_newest", + "type": "STRING" + }, + { + "description": "Keep track of the timestamp of the oldest stash of the addons blocklist.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_stash_time_oldest", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "datetime", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Application reputation remote verdict, keyed by file extension\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_VERDICT_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_verdict_2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by fingerprinter alias (key) and the source(s) used (category). An alias using multiple sources will increment each source individually once, and increment the combination once as well.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_alias_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "Fingerprinting detection hits by known fingerprinting string (key) and source (category).", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_type_text_by_source_per_tab2", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_DISPOSITION3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_disposition", + "type": "RECORD" + }, + { + "description": "DNS check for TRR was blocked by blacklist; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_BLACKLISTED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_blacklisted", + "type": "RECORD" + }, + { + "description": "Resolve success rate when in TRR-first and called TRR-disabled (fall-back mode); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_DISABLED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_disabled", + "type": "RECORD" + }, + { + "description": "TRR-first mode distribution. 0=Worked, 1=fell back fine after TRR fail, 2=native worked, 3=both failed; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_FIRST4.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_first", + "type": "RECORD" + }, + { + "description": "HTTP version used by DoH endpoint\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_HTTP_VERSION2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_http_version", + "type": "RECORD" + }, + { + "description": "TRR managed to verify NS entry; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram DNS_TRR_NS_VERFIFIED3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_ns_verfified", + "type": "RECORD" + }, + { + "description": "How often TRR (Trusted Recursive Resolver) requests are fine, time-out or error. Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_TRR_SUCCESS3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_success", + "type": "RECORD" + }, + { + "description": "True if the first initialization attempt succeeded, keyed by the initialization type.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram QM_FIRST_INITIALIZATION_ATTEMPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_first_initialization_attempt", + "type": "RECORD" + }, + { + "description": "The number of times a browserAction popup is preloaded and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_BROWSERACTION_POPUP_PRELOAD_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result_by_addonid", + "type": "RECORD" + }, + { + "description": "The number of times an event page hit the idle timeout and results in one of the categories, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_EVENTPAGE_IDLE_RESULT_COUNT_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result_by_addonid", + "type": "RECORD" + }, + { + "description": "HTTP Cache v2 hit/miss stats keyed by content type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CACHE_DISPOSITION_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_cache_disposition", + "type": "RECORD" + }, + { + "description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_TRAFFIC_ANALYSIS_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_traffic_analysis", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTP3 is used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP3_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http3_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_upgrade", + "type": "RECORD" + }, + { + "description": "Page load errors. Match values with type of error in nsDocShellTelemetryUtils.cpp\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PAGE_LOAD_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "page_load_error", + "type": "RECORD" + }, + { + "description": "Result of the content signature verification keyed by application (certificate fingerprint).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_content_signature_verification_errors", + "type": "RECORD" + }, + { + "description": "What content type did we upgrade, and did it load successfully?\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTPS_ONLY_MODE_UPGRADE_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_type", + "type": "RECORD" + }, + { + "description": "The result of attempting to open a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_OPEN.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_open", + "type": "RECORD" + }, + { + "description": "The result of attempting to query a sqlite file.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SQLITE_STORE_QUERY.\nInitially this metric also recorded the \"success\" category, but due to the high volume of recording those, only failure categories are now tracked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sqlite_store_query", + "type": "RECORD" + }, + { + "description": "This metric is recorded every time a gethash lookup is performed, `true` is recorded if the lookup times out. Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_COMPLETE_TIMEOUT2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dual_labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: \"default\", \"always\", or \"never\". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "a11y_theme", + "type": "RECORD" + }, + { + "description": "Values of boolean preferences.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "calendar_preferences_boolean", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for normal windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_normal_window_service_mode", + "type": "RECORD" + }, + { + "description": "The pref value of the cookie banner service mode for private windows.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_private_window_service_mode", + "type": "RECORD" + }, + { + "description": "Recorded on enable tool checkbox check/uncheck in Developer Tools options panel. Boolean stating if the tool was enabled or disabled by the user. Keyed by tool id. Current default tools with their id's are defined in https://searchfox.org/mozilla- central/source/devtools/client/definitions.js This metric was generated to correspond to the Legacy Telemetry scalar devtools.tool.registered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "devtools_tool_registered", + "type": "RECORD" + }, + { + "description": "Which data subdirectories suffered an err between is_dir and read_dir\nwhile reporting fog.data_diretory_info.\n(Potentially because they were removed in the interim).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_err", + "type": "RECORD" + }, + { + "description": "Which system provider are we using on Linux\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "geolocation_linux_provider", + "type": "RECORD" + }, + { + "description": "If in app notifications are being shown based on preferences.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "inappnotifications_preferences", + "type": "RECORD" + }, + { + "description": "Values of boolean preferences.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mail_preferences_boolean", + "type": "RECORD" + }, + { + "description": "Configuration of the folder and message panes. Whether they are set to be shown or not.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mail_ui_configuration_pane_visibility", + "type": "RECORD" + }, + { + "description": "The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_playback_device_hardware_decoder_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "media_video_hd_hardware_decoding_support", + "type": "RECORD" + }, + { + "description": "Record the statuses related with the media decryption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "mediadrm_decryption", + "type": "RECORD" + }, + { + "description": "True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "networking_doh_heuristic_ever_tripped", + "type": "RECORD" + }, + { + "description": "Stores alt text modal settings for the user.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_alt_text_edit", + "type": "RECORD" + }, + { + "description": "Success status of using SpecialSystemDirectory's fallback path to retrieve\neither %AppData% or %LocalAppData%.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "system_special_directory_appdata_fallback", + "type": "RECORD" + }, + { + "description": "Whether the system has any matching pointing device for each label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "BOOL" + } + ], + "mode": "REPEATED", + "name": "widget_pointing_devices", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_boolean", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Whether a binary file examined by download protection is one of the common archive formats.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_ARCHIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_archive", + "type": "RECORD" + }, + { + "description": "Whether or not the file examined by download protection is a binary type (or it's not possible to tell because the filename is missing).\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_BINARY_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_binary_type", + "type": "RECORD" + }, + { + "description": "The reason application reputation service blocks or allows the download.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_reason", + "type": "RECORD" + }, + { + "description": "Recorded when application reputation remote lookup is performed, `true` is recorded if the lookup times out.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_remote_lookup_timeout", + "type": "RECORD" + }, + { + "description": "Network status of the application reputation remote lookup\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram APPLICATION_REPUTATION_SERVER_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_server_2", + "type": "RECORD" + }, + { + "description": "Overall (local or remote) application reputation verdict (shouldBlock=false is OK).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APPLICATION_REPUTATION_SHOULD_BLOCK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "application_reputation_should_block", + "type": "RECORD" + }, + { + "description": "Whether non-RDM page had user-triggered zooming activity\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram APZ_ZOOM_ACTIVITY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "apz_zoom_activity", + "type": "RECORD" + }, + { + "description": "AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1lx", + "type": "RECORD" + }, + { + "description": "AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_a1op", + "type": "RECORD" + }, + { + "description": "AVIF alpha plane. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_alpha", + "type": "RECORD" + }, + { + "description": "Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_aom_decode_error", + "type": "RECORD" + }, + { + "description": "Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_bit_depth", + "type": "RECORD" + }, + { + "description": "AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_cp", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_mc", + "type": "RECORD" + }, + { + "description": "AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_cicp_tc", + "type": "RECORD" + }, + { + "description": "AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_clap", + "type": "RECORD" + }, + { + "description": "AVIF colour information type. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_colr", + "type": "RECORD" + }, + { + "description": "Decode result of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decode_result", + "type": "RECORD" + }, + { + "description": "Decoder of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_decoder", + "type": "RECORD" + }, + { + "description": "AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_grid", + "type": "RECORD" + }, + { + "description": "AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ipro", + "type": "RECORD" + }, + { + "description": "AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_ispe", + "type": "RECORD" + }, + { + "description": "AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_lsel", + "type": "RECORD" + }, + { + "description": "AVIF major brand\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_MAJOR_BRAND.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_major_brand", + "type": "RECORD" + }, + { + "description": "AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pasp", + "type": "RECORD" + }, + { + "description": "AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_pixi", + "type": "RECORD" + }, + { + "description": "AVIF image sequence\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram AVIF_SEQUENCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_sequence", + "type": "RECORD" + }, + { + "description": "YUV color space of AVIF image. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "avif_yuv_color_space", + "type": "RECORD" + }, + { + "description": "The common combinations of BFCacheStatus when we determine whether the page can be BFCached or not; If it's BFCached, we record BFCache_Success; Success_Not_Toplevel represents the number of not the only top level document in BrowsingContextGroup's documents that are BFCached, and BFCache_Success includes Success_Not_Toplevel; If it's not and it falls under common failure reasons combinations, we record the corresponding combination; Otherwise, we record Other to indicate this is not a common failure\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram BFCACHE_COMBO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_combo", + "type": "RECORD" + }, + { + "description": "Whether bfcache is used when loading a page from session history\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BFCACHE_PAGE_RESTORED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bfcache_page_restored", + "type": "RECORD" + }, + { + "description": "Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "bounce_tracking_protection_purge_count", + "type": "RECORD" + }, + { + "description": "Count the number of times a new top page was starting to load\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FX_TOTAL_TOP_VISITS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_engagement_total_top_visits", + "type": "RECORD" + }, + { + "description": "Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_ui_interaction_keyboard", + "type": "RECORD" + }, + { + "description": "2D canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_2D_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_used_2d", + "type": "RECORD" + }, + { + "description": "WebGL2 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL2_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl2_success", + "type": "RECORD" + }, + { + "description": "Track the failure IDs that lead us to reject attempting to create an accelerated context. CANVAS_WEBGL_FAILURE_ID reports the overall WebGL status with the attempt to fallback.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_ACCL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_accl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL runtime and dynamic failure IDs. This will record a count for each context creation success or failure. Each failure id is a unique identifier that can be traced back to a particular failure branch or blocklist rule.\nThis metric was generated to correspond to the Legacy Telemetry count histogram CANVAS_WEBGL_FAILURE_ID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_failure_id", + "type": "RECORD" + }, + { + "description": "WebGL1 creation success\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_success", + "type": "RECORD" + }, + { + "description": "WebGL canvas used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CANVAS_WEBGL_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "canvas_webgl_used", + "type": "RECORD" + }, + { + "description": "The number of times each certificate compression algorithm returned an error.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_compression_failures", + "type": "RECORD" + }, + { + "description": "Certificate pinning results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_results", + "type": "RECORD" + }, + { + "description": "Certificate pinning test results (0 = failure, 1 = success)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CERT_PINNING_TEST_RESULTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_pinning_test_results", + "type": "RECORD" + }, + { + "description": "Which revocation checking mechanisms were used in a TLS handshake?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_cert_revocation_mechanisms", + "type": "RECORD" + }, + { + "description": "Counts the number of times different CRLite statuses were returned.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_status", + "type": "RECORD" + }, + { + "description": "The OCSP result when CRLite claims a certificate is revoked.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cert_verifier_crlite_vs_ocsp_result", + "type": "RECORD" + }, + { + "description": "Counts the preferred audio codec being signaled to us to identify preferred audio codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_audio_preferred_codec", + "type": "RECORD" + }, + { + "description": "Count how many other fec options are being offered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_other_fec_signaled", + "type": "RECORD" + }, + { + "description": "Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_ulpfec_negotiated", + "type": "RECORD" + }, + { + "description": "Counts the preferred video codec being signaled to us to identify preferred video codec.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "codec_stats_video_preferred_codec", + "type": "RECORD" + }, + { + "description": "How many times messages were written in HTML composition mode, vs. how many were written in plain text composition mode. Label names are from nsIMsgCompFormat.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "compose_compose_format", + "type": "RECORD" + }, + { + "description": "How many times each message compose type was used when creating a message.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "compose_compose_type", + "type": "RECORD" + }, + { + "description": "Whether any canvas fingerprinting attempt was detected, as identified by either a known fingerprinting text or a known behavior (alias)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab2", + "type": "RECORD" + }, + { + "description": "A count of the status of cryptominer blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one cryptominer was blocked, 'allowed' = at least one cryptominer was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram CRYPTOMINERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_cryptominers_blocked_count", + "type": "RECORD" + }, + { + "description": "A count of the classified email trackers. ('base_normal' = The classified email tracker is in base category and loaded under a normal site, 'content_normal' = The classified email tracker is in content category and loaded under a normal site, 'base_email_webapp' = The classified email tracker is in base category and loaded under a known email webapp, 'content_email_webapp' = The classified email tracker is in content category and loaded under a known email webapp.)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram EMAIL_TRACKER_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_count", + "type": "RECORD" + }, + { + "description": "A count of the status of fingerprinter blocking per top level page load. ('pageLoad' = There was a page load, 'blocked' = at least one fingerprinter was blocked, 'allowed' = at least one fingerprinter was detected and allowed.) Note, pageLoad is used as a baseline measurement.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram FINGERPRINTERS_BLOCKED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_fingerprinters_blocked_count", + "type": "RECORD" + }, + { + "description": "Whether a probable font fingerprinting attempt was detected\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_font_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the query stripping. ('Navigation' = There was a top-level loading via navigation, 'Redirect' = There was a top-level loading via redirect, 'StripForNavigation' = There was a stripping happened for a top-level navigation, 'StripForRedirect' = There was a stripping happened for a top-level redirect.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count", + "type": "RECORD" + }, + { + "description": "Counts how often specific query parameters are stripped.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram QUERY_STRIPPING_COUNT_BY_PARAM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_query_stripping_count_by_param", + "type": "RECORD" + }, + { + "description": "A count of the granted storage access. ('StorageGranted' = There was a storage access granted, 'StorageAccessAPI' = the storage access was granted by the storage access API, 'OpenerAfterUserInteraction' = the storage access was granted due to the heuristic 'OpenerAfterUserInteraction', 'Opener' = the storage access was granted due to the heuristic 'Opener', 'Redirect' = the storage access was granted due to the heuristic 'Redirect', 'RedirectTracker' = the storage access was granted due to the heuristic 'RedirectTracker'.) Note, StorageGranted is used as a baseline measurement, which should be the sum of all other measurements. We also duplicate all data reported into a corresponding *_CT label where the grant is given to a known classified tracker.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_GRANTED_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_storage_access_granted_count", + "type": "RECORD" + }, + { + "description": "True if tracking protection is enabled globally at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_enabled", + "type": "RECORD" + }, + { + "description": "True if tracking protection in Private Browsing mode is disabled at startup.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TRACKING_PROTECTION_PBM_DISABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "contentblocking_tracking_protection_pbm_disabled", + "type": "RECORD" + }, + { + "description": "The count of detected input fields that a website plans on splitting the cc number digits across\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "creditcard_detected_cc_number_fields_count", + "type": "RECORD" + }, + { + "description": "Cycle collection finished an incremental GC\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_FINISH_IGC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_finish_igc", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_need_gc", + "type": "RECORD" + }, + { + "description": "Cycle collection synchronously ran forget skippable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_SYNC_SKIPPABLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_sync_skippable", + "type": "RECORD" + }, + { + "description": "Needed garbage collection before cycle collection in a worker.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CYCLE_COLLECTOR_WORKER_NEED_GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "cycle_collector_worker_need_gc", + "type": "RECORD" + }, + { + "description": "Number of times a context menu item for an accessible object was activated (with mouse or keyboard) from the context menu opened in the accessibility tree. Keyed by the id of the context menu item. This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.accessible_context_menu_item_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_accessible_context_menu_item_activated", + "type": "RECORD" + }, + { + "description": "Number of times accessibility audit was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the audit filter type (e.g. \"CONTRAST\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.audit_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_audit_activated", + "type": "RECORD" + }, + { + "description": "Number of times an accessible object was inspected from outside the Accessibility tool (navigation to Accessibility panel). Keyed by the source of user action (inspector context menu, browser context menu, etc). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.select_accessible_for_node.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_select_accessible_for_node", + "type": "RECORD" + }, + { + "description": "Number of times accessibility simulation was activated (with mouse or keyboard) from the accessibility panel's toolbar. Keyed by the simulation type (e.g. \"DEUTERANOPIA\"). This metric was generated to correspond to the Legacy Telemetry scalar devtools.accessibility.simulation_activated.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_accessibility_simulation_activated", + "type": "RECORD" + }, + { + "description": "Records the key-identifiers of error messages when they are displayed in the webconsole of the debugger. Nothing should be recorded unless they are visible on the user screen. The label will be the error message name or \"Unknown\".\nThis metric replaces the Legacy Telemetry boolean histogram DEVTOOLS_JAVASCRIPT_ERROR_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_console_javascript_error_displayed", + "type": "RECORD" + }, + { + "description": "Number of times DevTools was opened, keyed by theme. This metric was generated to correspond to the Legacy Telemetry scalar devtools.current_theme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_current_theme", + "type": "RECORD" + }, + { + "description": "Records how the user is triggering Developer Tools startup.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_ENTRY_POINT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_entry_point", + "type": "RECORD" + }, + { + "description": "Indicates if the font editor displayed its UI for a non-variable font or a variable font\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DEVTOOLS_FONTEDITOR_FONT_TYPE_DISPLAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_fonteditor_font_type_displayed", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools inspector was opened with the 3 pane inspector enabled, keyed by true/false. This metric was generated to correspond to the Legacy Telemetry scalar devtools.inspector.three_pane_enabled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_inspector_three_pane_enabled", + "type": "RECORD" + }, + { + "description": "Number of Responsive Design Mode opens keyed by the UI entry point used. This metric was generated to correspond to the Legacy Telemetry scalar devtools.responsive.open_trigger.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_responsive_open_trigger", + "type": "RECORD" + }, + { + "description": "Number of times the DevTools tab was reordered. Keyed by tab's id. This metric was generated to correspond to the Legacy Telemetry scalar devtools.toolbox.tabs_reordered.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_tabs_reordered", + "type": "RECORD" + }, + { + "description": "Number of times a tooltip was shown, keyed by tooltip type. Currently supported types are \"image\", \"font-family\", \"inactive- css\", \"css-compatibility\", \"css-query-container\" and \"variable.\" This metric was generated to correspond to the Legacy Telemetry scalar devtools.tooltip.shown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "devtools_tooltip_shown", + "type": "RECORD" + }, + { + "description": "Counts the amount of times that we get a record that is different (or identical) from the one that was used from the cache after a grace period induced renewal.\nThis is to keep track of the amount of possible breakage that is occuring due to the grace period and useful for evaluating experiments increasing the grace period.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_grace_period_renewal", + "type": "RECORD" + }, + { + "description": "DNS: lookup algorithm\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DNS_LOOKUP_ALGORITHM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dns_lookup_algorithm", + "type": "RECORD" + }, + { + "description": "Webkit/Blink filesystem used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BLINK_FILESYSTEM_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_blink_filesystem_used", + "type": "RECORD" + }, + { + "description": "Whether a content process was launched synchronously (unnecessarily delaying UI response).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CONTENT_PROCESS_LAUNCH_IS_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_contentprocess_launch_is_sync", + "type": "RECORD" + }, + { + "description": "Deleted or to-be-reused innerwindow which has had mutation event listeners.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram INNERWINDOWS_WITH_MUTATION_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_innerwindows_with_mutation_listeners", + "type": "RECORD" + }, + { + "description": "Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_parentprocess_process_launch_errors", + "type": "RECORD" + }, + { + "description": "Record the input from which the bytes are coming from, for each script in a document.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram DOM_SCRIPT_LOADING_SOURCE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_script_loading_source", + "type": "RECORD" + }, + { + "description": "Storage Access API UI events.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STORAGE_ACCESS_API_UI.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_storage_access_api_ui", + "type": "RECORD" + }, + { + "description": "HTMLInputElement.webkitdirectory attribute used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBKIT_DIRECTORY_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_webkit_directory_used", + "type": "RECORD" + }, + { + "description": "Type of XMLHttpRequest, async or sync\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram XMLHTTPREQUEST_ASYNC_OR_SYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "dom_xmlhttprequest_async_or_sync", + "type": "RECORD" + }, + { + "description": "Counters for startup cache data hits or misses on initializating\nDNR rules for extensions loaded on application startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_apis_dnr_startup_cache_entries", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_browser_action_preload_result", + "type": "RECORD" + }, + { + "description": "Number of times an event page hit the idle timeout and results in one of the labels.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_counters_event_page_idle_result", + "type": "RECORD" + }, + { + "description": "The number of times a storage.local backend data migration has been completed and results in one of the categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram WEBEXT_STORAGE_LOCAL_IDB_MIGRATE_RESULT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_data_migrate_result_count", + "type": "RECORD" + }, + { + "description": "Counters for how many times the extension process has crashed or been created.\nThe labels with \"_fg\" / \"_bg\" suffixes are only recorded in Android builds,\nwhile the \"created\" and \"crashed\" labels are recorded on both Desktop and Android\nbuilds.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_process_event", + "type": "RECORD" + }, + { + "description": "The number of times an unexpected error has been raised while reading\nthe extensions StartupCache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "extensions_startup_cache_read_errors", + "type": "RECORD" + }, + { + "description": "Accumulated file size (bytes) uploaded to FileLink services, keyed by FileLink provider type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "filelink_uploaded_size", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while reporting fog.data_diretory_info.\n(Potentially because they were removed between `read_dir` and the iteration).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_err", + "type": "RECORD" + }, + { + "description": "How many dir entries per data subdirectory errored while retrieving their metadata\nwhile reporting fog.data_diretory_info.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fog_subdir_entry_metadata_err", + "type": "RECORD" + }, + { + "description": "system fallback font can't be used\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram BAD_FALLBACK_FONT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_bad_fallback_font", + "type": "RECORD" + }, + { + "description": "font cache hit\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram FONT_CACHE_HIT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "fontlist_font_cache_hit", + "type": "RECORD" + }, + { + "description": "The heuristic that detected the form submission.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "formautofill_form_submission_heuristic", + "type": "RECORD" + }, + { + "description": "Whether the default provider falled back to NetworkGeolocationProvider.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_fallback", + "type": "RECORD" + }, + { + "description": "The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "geolocation_request_result", + "type": "RECORD" + }, + { + "description": "The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_content_frame_time_reason", + "type": "RECORD" + }, + { + "description": "MacOS video low power state achieved when enqueueing a video frame.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram GFX_MACOS_VIDEO_LOW_POWER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gfx_macos_video_low_power", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set with an invalid label.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_label", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set a value that overflowed.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_overflow", + "type": "RECORD" + }, + { + "description": "Counts the number of times a timing metric was used incorrectly.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times a metric was set to an invalid value.\nThe labels are the `category.name` identifier of the metric.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_error_invalid_value", + "type": "RECORD" + }, + { + "description": "Counts the number of ping upload failures, by type of failure.\nThis includes failures for all ping types,\nthough the counts appear in the next successfully sent `metrics` ping.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_upload_ping_upload_failure", + "type": "RECORD" + }, + { + "description": "A count of the built-in pings submitted, by ping type.\n\nThis metric appears in both the metrics and baseline pings.\n\n- On the metrics ping, the counts include the number of pings sent since\n the last metrics ping (including the last metrics ping)\n- On the baseline ping, the counts include the number of pings send since\n the last baseline ping (including the last baseline ping)\n\nNote: Previously this also recorded the number of submitted custom pings.\nNow it only records counts for the Glean built-in pings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "glean_validation_pings_submitted", + "type": "RECORD" + }, + { + "description": "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gmp_update_xml_fetch_result", + "type": "RECORD" + }, + { + "description": "How often we use different fallbacks when the GPU process crashes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "gpu_process_crash_fallbacks", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose dispatching beforeinput events are canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_OVERRIDDEN_BY_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_overridden_by_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors whose window or a node in it has had mutation event listeners, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_LISTENERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_listeners_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTMLEDITORS_WITH_MUTATION_OBSERVERS_WITHOUT_BEFOREINPUT_LISTENERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "htmleditors_with_mutation_observers_without_beforeinput_listeners", + "type": "RECORD" + }, + { + "description": "Whether or not a new alt-svc mapping would change the target hostname of the existing mapping\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_ALTSVC_MAPPING_CHANGED_TARGET.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_altsvc_mapping_changed_target", + "type": "RECORD" + }, + { + "description": "Cache discovered inconsistent last-modified entry\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram CACHE_LM_INCONSISTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_cache_lm_inconsistent", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CHANNEL_ONSTART_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_channel_onstart_success", + "type": "RECORD" + }, + { + "description": "Fraction of sockets that used a nsConnectionEntry with history - size 300.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_CONNECTION_ENTRY_CACHE_HIT_1.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_connection_entry_cache_hit", + "type": "RECORD" + }, + { + "description": "TLS handshake with and without EchConfig success rate.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ECHCONFIG_SUCCESS_RATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_echconfig_success_rate", + "type": "RECORD" + }, + { + "description": "Whether an HTTP/2 session failed because the peer did not handshake properly\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP2_FAIL_BEFORE_SETTINGS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_http2_fail_before_settings", + "type": "RECORD" + }, + { + "description": "Whether a HTTP page load was over SSL or not. Recorded during response processing for all first-party page loads.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_PAGELOAD_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_pageload_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether the script load has a MIME type of ...? (unknown, javaScript, image, audio, video, text_plain, text_csv, text_xml, app_octet_stream, app_xml, app_json, text_json, text_html, empty). Whether the script load is from ...? (serviceworker_load, worker_load, importSript_load, script_load). Whether the script load is of ...? (same_origin, CORS_origin, cross_origin)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_BLOCK_INCORRECT_MIME_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_script_block_incorrect_mime", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted (true) or rejected (false) by the remote host.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram TLS_EARLY_DATA_ACCEPTED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Whether an HTTP request occurred over TLS/SSL or not. Recorded during response processing for all requests.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_IS_SSL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_is_ssl", + "type": "RECORD" + }, + { + "description": "Whether a HTTP transaction was routed via Alt-Svc or not.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram HTTP_TRANSACTION_USE_ALTSVC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "http_transaction_use_altsvc", + "type": "RECORD" + }, + { + "description": "True when an IPC transaction is canceled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram IPC_TRANSACTION_CANCEL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ipc_transaction_cancel", + "type": "RECORD" + }, + { + "description": "Whether the budget was increased due to taking too long or approaching the incremental limit\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_budget_was_increased", + "type": "RECORD" + }, + { + "description": "Is it a zone GC?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_is_zone_gc", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason", + "type": "RECORD" + }, + { + "description": "Reason (enum value) that caused a long (>1ms) minor GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_minor_reason_long", + "type": "RECORD" + }, + { + "description": "Was the GC non-incremental?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental", + "type": "RECORD" + }, + { + "description": "Reason for performing a non-incremental GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_non_incremental_reason", + "type": "RECORD" + }, + { + "description": "Whether parallel marking was used for this collection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_parallel_mark_used", + "type": "RECORD" + }, + { + "description": "Reason (enum value) for initiating a GC\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reason", + "type": "RECORD" + }, + { + "description": "Was an incremental GC canceled?\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset", + "type": "RECORD" + }, + { + "description": "Reason for cancelling an ongoing GC (see js::GCAbortReason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_reset_reason", + "type": "RECORD" + }, + { + "description": "Whether a GC slice took 1.5 times or 5ms more than its budget\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slice_was_long", + "type": "RECORD" + }, + { + "description": "The longest phase in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_phase", + "type": "RECORD" + }, + { + "description": "The longest parallel task in any slice that goes over 2x the budget. The phase values are defined in js/src/gc/GenerateStatsPhases.py.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "javascript_gc_slow_task", + "type": "RECORD" + }, + { + "description": "Long running reflow, interruptible or not\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LONG_REFLOW_INTERRUPTIBLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "layout_long_reflow_interruptible", + "type": "RECORD" + }, + { + "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "localdomstorage_preload_pending_on_first_access", + "type": "RECORD" + }, + { + "description": "Counts the number of folder compactions that happen and how they ended.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mail_compact_result", + "type": "RECORD" + }, + { + "description": "How many times email accounts setup failed, keyed by account config source.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mail_failed_email_account_setup", + "type": "RECORD" + }, + { + "description": "How many times folders of each type are opened.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mail_folder_opened", + "type": "RECORD" + }, + { + "description": "Counts mbox read failures by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mail_mbox_read_errors", + "type": "RECORD" + }, + { + "description": "Counts mbox write oddities which might indicate problems.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mail_mbox_write_errors", + "type": "RECORD" + }, + { + "description": "A count of how many times each new mail notification action is used. Labels identify the actions, as defined in MailNotificationManager.sys.mjs.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mail_notification_used_actions", + "type": "RECORD" + }, + { + "description": "How many times email accounts setup succeeded, keyed by account config source.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mail_successful_email_account_setup", + "type": "RECORD" + }, + { + "description": "How many times search the web was used, keyed by search engine name.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mail_websearch_usage", + "type": "RECORD" + }, + { + "description": "The operating system audio backend (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_backend", + "type": "RECORD" + }, + { + "description": "Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_audio_init_failure", + "type": "RECORD" + }, + { + "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio.\nThis metric was generated to correspond to the Legacy Telemetry count histogram MEDIA_CODEC_USED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_codec_used", + "type": "RECORD" + }, + { + "description": "Count the amount of the real world codec usage inside Matroska.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mkv_codec_type", + "type": "RECORD" + }, + { + "description": "Records if multiple codecs are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CODECS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_codecs", + "type": "RECORD" + }, + { + "description": "Records if multiple sets of crypto info are present in a track's sample description entries. Recorded each time we process a track's metadata while parsing mp4s.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram MEDIA_MP4_PARSE_SAMPLE_DESCRIPTION_ENTRIES_HAVE_MULTIPLE_CRYPTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mp4_parse_sample_description_entries_have_multiple_crypto", + "type": "RECORD" + }, + { + "description": "Count the actual or possible (because we don't support some of them for now) usage amount for each media mime type used in MSE. We collect this data in MediaSource's `AddSourceBuffer()` and `IsTypeSupported()`.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MSE_SOURCE_BUFFER_TYPE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_mse_source_buffer_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_playback_not_supported_video_per_mime_type", + "type": "RECORD" + }, + { + "description": "Count the amount of times where a mime type is queried via MediaRecorder.isTypeSupported() or passed to the MediaRecorder constructor. The result is accumulated per mime type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_recorder_mime_type_query", + "type": "RECORD" + }, + { + "description": "ISOBMFF brand pattern used to identify MP4 in media sniffer\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MEDIA_SNIFFER_MP4_BRAND_PATTERN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "media_sniffer_mp4_brand_pattern", + "type": "RECORD" + }, + { + "description": "How often audio loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_AUDIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_audio", + "type": "RECORD" + }, + { + "description": "How often image loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_IMAGES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_images", + "type": "RECORD" + }, + { + "description": "How often video loads fail in regular mode and in upgrading mode?\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram MIXED_CONTENT_VIDEO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mixed_content_video", + "type": "RECORD" + }, + { + "description": "Collection of javascript modules that created a Sqlite.sys.mjs transaction taking too long and timing out. This can be used to identify and optimize those modules transactions. This metric was generated to correspond to the Legacy Telemetry scalar mozstorage.sqlitejsm_transaction_timeout.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "mozstorage_sqlitejsm_transaction_timeout", + "type": "RECORD" + }, + { + "description": "Gather the outcome of 0-RTT usage: - \"not_used\": 0RTT_NOT_USED - \"succeeded\": 0RTT_USED_SUCCESS - \"rejected\": 0RTT_USED_REJECT - \"conn_error\": 0RTT_USED_CONN_ERROR - \"conn_closed_by_necko\": 0RTT_CONN_CLOSED_BY_NECKO\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state", + "type": "RECORD" + }, + { + "description": "Counts the number of times we encountered a mismatched ALPN token and needed to reset the connection. Keyed by the negotiated NPN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_alpn_mismatch_count", + "type": "RECORD" + }, + { + "description": "Collect whether the resource is suspended by back pressure. And split by local-ness.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_BACK_PRESSURE_SUSPENSION_RATE_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_back_pressure_suspension_rate", + "type": "RECORD" + }, + { + "description": "Counts of cacheable/non-cacheable byte-range requests\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_byte_range_request", + "type": "RECORD" + }, + { + "description": "Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ...\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_miss_stat_per_cache_size", + "type": "RECORD" + }, + { + "description": "Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_cors_authorization_header", + "type": "RECORD" + }, + { + "description": "Network ID presence when the network connectivity checker reports that we have connectivity\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_ID_ONLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_id_online", + "type": "RECORD" + }, + { + "description": "Stats for validation requests when cache won the race.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_VALIDATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_validation", + "type": "RECORD" + }, + { + "description": "Whether we raced network with the cache.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_race_cache_with_network_usage", + "type": "RECORD" + }, + { + "description": "Ratio of used and unused resources preloaded with link rel=preload tag or response header, broken down by supported resource type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram REL_PRELOAD_MISS_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_rel_preload_miss_ratio", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of fallback requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_retried_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "Counts how often Entra SSO succeeded/failed (macOS only). Labels are ordered in reverse chronological relation to SSO success, meaning the labels higher up are closer to the SSO success. device_headers_missing: only device_headers is missing in the SSO cookie. prt_headers_missing: only prt_headers is missing in the SSO cookie. both_headers_missing: both prt_headers and device_headers are missing in the SSO cookie. invalid_cookie: Failed to parse SSO cookie (could be a null cookie/format is incorrect). no_credential: ASAuthorizationSingleSignOnCredential is not present broker_error: An error from Microsoft's broker. invalid_controller_setup: ASAuthorizationController is setup incorrectly.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_sso_entra_success", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addon_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to *.addons.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_addonversion_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to other mozilla.org domains\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_other_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_remote_settings_status", + "type": "RECORD" + }, + { + "description": "Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_success_or_failure", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_telemetry_status", + "type": "RECORD" + }, + { + "description": "Counts the status of succeeded and failed requests to aus5.mozilla.org\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_system_channel_update_status", + "type": "RECORD" + }, + { + "description": "TLS early data was used and it was accepted or rejected by the remote host.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_accepted", + "type": "RECORD" + }, + { + "description": "Sending TLS early data was not possible, possible and used, or possible but not used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "network_tls_early_data_negotiated", + "type": "RECORD" + }, + { + "description": "Counts how often we purge cache entries from memory due to memory limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cache_purge_due_to_memory_limit", + "type": "RECORD" + }, + { + "description": "Number of seconds the captive portal banner was displayed for, keyed by close reason:\n \"success\" - the portal login was completed\n \"abort\" - the portal login was aborted (e.g. loss of network)\n \"dismiss\" - the user dismissed the banner\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.captive_portal_banner_display_time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_captive_portal_banner_display_time", + "type": "RECORD" + }, + { + "description": "Records the IP address family (IPv4 or IPv6) used when an HTTP transaction is dispatched.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_connection_address_type", + "type": "RECORD" + }, + { + "description": "Counts cookies loaded from the DB grouped by validation result.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_db_validation", + "type": "RECORD" + }, + { + "description": "Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_cookie_timestamp_fixed_count", + "type": "RECORD" + }, + { + "description": "How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters:\n 1. normal browsing or private browsing\n 2. system principal or not\n 3. first party or third party\n 4. class of service (Leader/Background/Others)\n 5. tracking classification (Basic/Content/FingerprintingContent)\n\nAvailable keys are:\n \"Y0_N1Sys\",\n \"Y1_N1\",\n \"Y2_N3Oth\",\n \"Y3_N3BasicLead\",\n \"Y4_N3BasicBg\",\n \"Y5_N3BasicOth\",\n \"Y6_N3ContentLead\",\n \"Y7_N3ContentBg\",\n \"Y8_N3ContentOth\",\n \"Y9_N3FpLead\",\n \"Y10_N3FpBg\",\n \"Y11_N3FpOth\",\n \"Y12_P1Sys\",\n \"Y13_P1\",\n \"Y14_P3Oth\",\n \"Y15_P3BasicLead\",\n \"Y16_P3BasicBg\",\n \"Y17_P3BasicOth\",\n \"Y18_P3ContentLead\",\n \"Y19_P3ContentBg\",\n \"Y20_P3ContentOth\",\n \"Y21_P3FpLead\",\n \"Y22_P3FpBg\",\n \"Y23_P3FpOth\"\n\nThis metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_data_transferred_v3_kb", + "type": "RECORD" + }, + { + "description": "The count of calls to the native DNS APIs\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_dns_native_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are dropped due to configured resource limits.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_discard_count", + "type": "RECORD" + }, + { + "description": "Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_fetch_keepalive_request_count", + "type": "RECORD" + }, + { + "description": "The type of signal that caused a congestion event in Firefox's QUIC stack.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_congestion_event_reason", + "type": "RECORD" + }, + { + "description": "Number of HTTP3 connections closed, labeled by reason.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_connection_close_reason", + "type": "RECORD" + }, + { + "description": "Number of paths known to be ECN capable or not-capable.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_ecn_path_capability", + "type": "RECORD" + }, + { + "description": "Number of QUIC frames send and received by type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_quic_frame_count", + "type": "RECORD" + }, + { + "description": "Counts whether an HTTP3 connections exited slow start.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_3_slow_start_exited", + "type": "RECORD" + }, + { + "description": "Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: disabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_disabled_wont", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_no_reason)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_no_reason", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enable_upgrade)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_upgrade", + "type": "RECORD" + }, + { + "description": "Upgrading display content Channel Disposition (key: enabled_wont)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_disposition_enabled_wont", + "type": "RECORD" + }, + { + "description": "Whether successfully started HTTP channels\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_status", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels when HTTPS RR is used\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_channel_onstart_success_https_rr", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_count", + "type": "RECORD" + }, + { + "description": "The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent used as hostnames\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_ip_addr_any_hostnames", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_subresource", + "type": "RECORD" + }, + { + "description": "Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_redirect_to_scheme_top_level", + "type": "RECORD" + }, + { + "description": "HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_status_code", + "type": "RECORD" + }, + { + "description": "HTTP protocol version used on response from nsHttp.h\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_response_version", + "type": "RECORD" + }, + { + "description": "Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_http_to_https_upgrade_reason", + "type": "RECORD" + }, + { + "description": "Whether a top-level request is HTTPS, HTTP, or HTTP for local domain\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_http_or_local", + "type": "RECORD" + }, + { + "description": "Gather the outcome of checking if a HTTPS record can be used: - \"invalid\" - \"succeeded\" - \"unmatched_cname\" - \"all_excluded\" - \"no_default_alpn\" - \"others\"\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_record_state", + "type": "RECORD" + }, + { + "description": "HTTPS RR is presented or not\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_https_rr_presented", + "type": "RECORD" + }, + { + "description": "Whether the request is crossing to a more private addresspace\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access", + "type": "RECORD" + }, + { + "description": "Count of permission prompts shown to users for local network access, separated by localhost vs local network access types. Cross-site labels are used when the requesting origin differs from the top-level origin.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_local_network_access_prompts_shown", + "type": "RECORD" + }, + { + "description": "The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_proxy_info_type", + "type": "RECORD" + }, + { + "description": "Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_residual_cache_folder_removal", + "type": "RECORD" + }, + { + "description": "Counts the occurrence of each outcome of a speculative connection\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_speculative_connect_outcome", + "type": "RECORD" + }, + { + "description": "Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_connection_cycle_count", + "type": "RECORD" + }, + { + "description": "The count of successful TRR requests keyed by regular/private browsing\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count", + "type": "RECORD" + }, + { + "description": "Number of DOH requests per connection keyed by HTTP version\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_count_per_conn", + "type": "RECORD" + }, + { + "description": "The initiator of this ORB blocked request.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_INITIATOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_initiator", + "type": "RECORD" + }, + { + "description": "The reason of why this request was blocked by ORB\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram ORB_BLOCK_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_block_reason", + "type": "RECORD" + }, + { + "description": "If any opaque response was blocked for a given top-level window context.\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram ORB_DID_EVER_BLOCK_RESPONSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "orb_did_ever_block_response", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_buttons", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edits or deletes comments.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_comment_edit", + "type": "RECORD" + }, + { + "description": "Counts the number of certificates used to sign a PDF document.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_digital_signature_certificate", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given color is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_color", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given kind is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_kind", + "type": "RECORD" + }, + { + "description": "Counts the number of times a given method is used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_method", + "type": "RECORD" + }, + { + "description": "Counts the number of different colors used to highlight.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_editing_highlight_number_of_colors", + "type": "RECORD" + }, + { + "description": "Counts the number of times some actions are executed in the PDF viewer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_geckoview", + "type": "RECORD" + }, + { + "description": "Number of images added with/without alt text.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_image_added", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user clears the signature while editing it.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_clear", + "type": "RECORD" + }, + { + "description": "Counts the number of times the user edit the description of a signature instance.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_signature_edit_description", + "type": "RECORD" + }, + { + "description": "Counts the number of times some PDF editing features are used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pdfjs_stamp", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many miliseconds of CPU time were used. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_ms_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "CPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "CPU time used by content processes used only for tracking resources, labeled by the category of the tracker.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_cpu_time_per_tracker_type_ms", + "type": "RECORD" + }, + { + "description": "How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_energy_per_process_type", + "type": "RECORD" + }, + { + "description": "GPU time used by each process type in ms.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_gpu_time_per_process_type_ms", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_process_type", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_background", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_content_foreground", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_gpu_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_inference_process", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_active", + "type": "RECORD" + }, + { + "description": "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "power_wakeups_per_thread_parent_inactive", + "type": "RECORD" + }, + { + "description": "If and why prefetches are used/unused.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PREDICTOR_PREFETCH_USE_STATUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "predictor_prefetch_use_status", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. \"FAILURE\" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_error", + "type": "RECORD" + }, + { + "description": "A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_settings_changed", + "type": "RECORD" + }, + { + "description": "A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "printing_target_type", + "type": "RECORD" + }, + { + "description": "Tracking where profiles have been created. The `legacy_forced` refers to\nusage of `MOZ_LEGACY_HOME=1` while `legacy_existing` is for the case an\nexisting legacy profile was detected. The `xdg_default` accounts for lack\nof `XDG_CONFIG_HOME` value defaulting to `$HOME/.config` when\n`xdg_config` refers to existing `XDG_CONFIG_HOME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "profiles_creation_place", + "type": "RECORD" + }, + { + "description": "The result of auto-filling a login form.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_form_autofill_result", + "type": "RECORD" + }, + { + "description": "Results of login import from a CSV/TSV file, by category\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram PWMGR_IMPORT_LOGINS_FROM_FILE_CATEGORICAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_import_logins_from_file_categorical", + "type": "RECORD" + }, + { + "description": "Whether a is a username-only form. (0=Form has a possible username field but is not considered as a username-only form, 1=Form is considered as a username-only form)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_IS_USERNAME_ONLY_FORM.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_is_username_only_form", + "type": "RECORD" + }, + { + "description": "The number of passwords generated when 'signon.improvedPasswordRules.enabled' is true. 0 = Password generated by default rules, 1 = Password generated by custom rules\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram PWMGR_NUM_IMPROVED_GENERATED_PASSWORDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "pwmgr_num_improved_generated_passwords", + "type": "RECORD" + }, + { + "description": "Records if a detected region value was stored or ignored. A region might be ignored if it is the US but the set timezone is not the US.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "region_store_region_result", + "type": "RECORD" + }, + { + "description": "Whether our process succedeed in creating a user namespace\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SANDBOX_HAS_USER_NAMESPACES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_has_user_namespaces", + "type": "RECORD" + }, + { + "description": "System calls blocked by a seccomp-bpf sandbox policy; limited to syscalls where we would crash on Nightly. The key is generally the architecture and syscall ID but in some cases we include non-personally-identifying information from the syscall arguments; see the function SubmitToTelemetry in security/sandbox/linux/reporter/SandboxReporter.cpp for details.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SANDBOX_REJECTED_SYSCALLS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "sandbox_rejected_syscalls", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the script preloader, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram SCRIPT_PRELOADER_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "script_preloader_requests", + "type": "RECORD" + }, + { + "description": "Measures how many servers have requested a client authentication certificate (key: \"requested\") and how many times the user has opted to send one in response (key: \"sent\"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "security_client_auth_cert_usage", + "type": "RECORD" + }, + { + "description": "complete TLS connect that used TLS Session Resumption (collected at same time as SSL_TIME_UNTIL_HANDSHAKE_FINISHED)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram SSL_RESUMED_SESSION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "ssl_resumed_session", + "type": "RECORD" + }, + { + "description": "Record hits and misses to the startup cache, with categories.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram STARTUP_CACHE_REQUESTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "startup_cache_requests", + "type": "RECORD" + }, + { + "description": "Counts of plugin/content process abnormal shutdown, whether or not a crash report was available.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_ABNORMAL_ABORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_abnormal_abort", + "type": "RECORD" + }, + { + "description": "Counts of plugin and content process crashes which are reported with a crash dump.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_CRASHES_WITH_DUMP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_crashes_with_dump", + "type": "RECORD" + }, + { + "description": "Counts the number of times a subprocess was forcibly killed, and the reason.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_KILL_HARD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_kill_hard", + "type": "RECORD" + }, + { + "description": "Counts the number of times launching a subprocess fails. Counts are by subprocess-type using the GeckoProcessType enum.\nThis metric was generated to correspond to the Legacy Telemetry count histogram SUBPROCESS_LAUNCH_FAILURE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "subprocess_launch_failure", + "type": "RECORD" + }, + { + "description": "The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "tls_xyber_intolerance_reason", + "type": "RECORD" + }, + { + "description": "The count of translation requests, along with their type.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "translations_request_count", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_external", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_notify", + "type": "RECORD" + }, + { + "description": "Update: Whether BITS could be used to download updates (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_CAN_USE_BITS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_can_use_bits_subsequent", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_external", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_notify", + "type": "RECORD" + }, + { + "description": "Update: keyed count (key names are prefixed with AUS_CHECK_EX_ERR_) of background update check extended error code (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry count histogram UPDATE_CHECK_EXTENDED_ERROR_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_check_extended_error_subsequent", + "type": "RECORD" + }, + { + "description": "Update: the application update badge type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_BADGE_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_badge_shown", + "type": "RECORD" + }, + { + "description": "Update: the dismiss action was executed for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_DISMISSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_dismissed", + "type": "RECORD" + }, + { + "description": "Update: the main update action was initiated for this application update doorhanger type.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_doorhanger", + "type": "RECORD" + }, + { + "description": "Update: the update action was initiated from the PanelUI application update menu item.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_MAIN_ACTION_MENU.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_main_action_menu", + "type": "RECORD" + }, + { + "description": "Update: the application update doorhanger type that was displayed.\nThis metric was generated to correspond to the Legacy Telemetry categorical histogram UPDATE_NOTIFICATION_SHOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_notification_shown", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_external", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_notify", + "type": "RECORD" + }, + { + "description": "Update: whether the service is installed (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram UPDATE_SERVICE_INSTALLED_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "update_service_installed_subsequent", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup hits a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_hit", + "type": "RECORD" + }, + { + "description": "Counts the number of times that a lookup misses a table. Keyed by table name.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_lookup_miss", + "type": "RECORD" + }, + { + "description": "Whether or not the metadata for a variable-length prefix set loaded from disk is corrupted (true = file corrupted).\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram URLCLASSIFIER_VLPS_METADATA_CORRUPT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_vlps_metadata_corrupt", + "type": "RECORD" + }, + { + "description": "The encoding of the notification icon URL\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_icon_url_encoding", + "type": "RECORD" + }, + { + "description": "The category of the origin that retrieves Notification.permission.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls Notification.requestPermission().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_request_permission_origin", + "type": "RECORD" + }, + { + "description": "The category of the origin that calls new Notification/showNotification().\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_notification_show_origin", + "type": "RECORD" + }, + { + "description": "Which content encoding is being used for push.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_content_encoding", + "type": "RECORD" + }, + { + "description": "The code indicating why the push message couldn't be processed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "web_push_error_code", + "type": "RECORD" + }, + { + "description": "The number of successfully created credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_create_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "The number of successfully asserted credentials by authenticator attachment modality.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webauthn_get_authenticator_attachment", + "type": "RECORD" + }, + { + "description": "Whether a key used in an encrypt/decrypt operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_ENC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_enc", + "type": "RECORD" + }, + { + "description": "Whether a generated key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_GENERATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_generate", + "type": "RECORD" + }, + { + "description": "Whether an imported key was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_IMPORT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_import", + "type": "RECORD" + }, + { + "description": "Whether a key used in a sign/verify operation was marked as extractable\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_EXTRACTABLE_SIG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_extractable_sig", + "type": "RECORD" + }, + { + "description": "Whether a promise created by WebCrypto was resolved (vs rejected)\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBCRYPTO_RESOLVED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webcrypto_resolved", + "type": "RECORD" + }, + { + "description": "Was DataChannels negotiated\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_DATACHANNEL_NEGOTIATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_datachannel_negotiated", + "type": "RECORD" + }, + { + "description": "Counts of GMP codec initialization success and failure\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_GMP_INIT_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_gmp_init_success", + "type": "RECORD" + }, + { + "description": "Whether any kind of H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether software H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HARDWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_hardware_h264_enabled", + "type": "RECORD" + }, + { + "description": "Whether the user has H264 hardware\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_HAS_H264_HARDWARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_has_h264_hardware", + "type": "RECORD" + }, + { + "description": "Whether hardware H264 is enabled\nThis metric was generated to correspond to the Legacy Telemetry boolean histogram WEBRTC_SOFTWARE_H264_ENABLED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_software_h264_enabled", + "type": "RECORD" + }, + { + "description": "The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_recv_codec_used", + "type": "RECORD" + }, + { + "description": "The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtc_video_send_codec_used", + "type": "RECORD" + }, + { + "description": "The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be \"0x0033\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_cipher", + "type": "RECORD" + }, + { + "description": "The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_client_handshake_result", + "type": "RECORD" + }, + { + "description": "The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_protocol_version", + "type": "RECORD" + }, + { + "description": "The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_server_handshake_result", + "type": "RECORD" + }, + { + "description": "The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be \"0x0001\")\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "webrtcdtls_srtp_cipher", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_counter", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Type of canvas fingerprinter detected (keyed by known_fingerprinting_text or unknown), 0 = none\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram CANVAS_FINGERPRINTING_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_canvas_fingerprinting_per_tab", + "type": "RECORD" + }, + { + "description": "A count of the embedded third-party email trackers for known email web apps. ('base_normal' = The count of loaded base email trackers under normal sites, 'content_normal' = The count of loaded content email trackers under normal sites, 'all_normal' = The count of all loaded email trackers under normal sites, 'base_emailapp' = The count of loaded base email trackers under email webapps, 'content_emailapp' = The count of loaded content email trackers under email webapps, 'all_emailapp' = The count of all loaded email trackers under email webapps.)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EMAIL_TRACKER_EMBEDDED_PER_TAB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "contentblocking_email_tracker_embedded_per_tab", + "type": "RECORD" + }, + { + "description": "Number of times we attempted TRR for a successful lookup in TRR-first mode. Keyed by provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_ATTEMPT_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_attempt_count", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR for HTTPS RR, keyed by the provider. Does not include requests that intentionally skip TRR.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_relevant_skip_reason_trr_first_type_rec", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native failed, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR was skipped and native succeeded, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_NATIVE_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_native_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and retried unsuccessfully, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_FAILED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_failed", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, if TRR failed once and was successfully retried, it lists the reason for the first failure, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_RETRY_SUCCESS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_retry_success", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR. The key is like `|` or just `` used when there was no second attempt.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_STRICT_MODE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_strict_mode", + "type": "RECORD" + }, + { + "description": "When in TRR-first mode, it lists the reason we may have skipped TRR, keyed by the provider.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram TRR_SKIP_REASON_TRR_FIRST2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_skip_reason_trr_first", + "type": "RECORD" + }, + { + "description": "Users action on blocked download, keyed by verdict type (0=Number of blocked downloads, 1=Confirm block, 2=Confirm unblock)\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram DOWNLOADS_USER_ACTION_ON_BLOCKED_DOWNLOAD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "downloads_user_action_on_blocked_download", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in an expensive content paint relative to the time spent in the entire expensive paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_LARGE_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_large_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_full", + "type": "RECORD" + }, + { + "description": "Percentages of times for phases in a normal content paint relative to the time spent in the entire normal paint. (\"dl\" = Display list, \"wrdl\" = WebRender display list, \"sb\" = Scene building, \"fb\" = Frame building)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram CONTENT_SMALL_PAINT_PHASE_WEIGHT_PARTIAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "gfx_content_small_paint_phase_weight_partial", + "type": "RECORD" + }, + { + "description": "Error code when http3 connection is closed. Look at Http3Session for more details.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_CONNECTION_CLOSE_CODE_3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_connection_close_code", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of PTOs.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_COUNTS_PTO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_counts_pto", + "type": "RECORD" + }, + { + "description": "Success / Fail Rates for HTTP3 Keyed by ECH Usage\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP3_ECH_OUTCOME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_ech_outcome", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of spurious retransmissions.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack", + "type": "RECORD" + }, + { + "description": "HTTP3: spurious retransmissions ratio (spurios_retransmission / packet sent * 10000).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_LATE_ACK_RATIO.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_late_ack_ratio", + "type": "RECORD" + }, + { + "description": "HTTP3: the number of received/sent packets.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_RECEIVED_SENT_DGRAMS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http3_received_sent_dgrams", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for page loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_PAGE_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_page_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Successfully started HTTP channels for resource loading when TRR is enabled; Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CHANNEL_SUB_ONSTART_SUCCESS_TRR3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_channel_sub_onstart_success_trr", + "type": "RECORD" + }, + { + "description": "Reason for HTTP connection closure, keyed by properties like HTTP version and connection state.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram HTTP_CONNECTION_CLOSE_REASON.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_connection_close_reason", + "type": "RECORD" + }, + { + "description": "The upload bandwidth for requests larger than 10MB. Measured in megabits per second, Mbps. Keyed by HTTP protocol version.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_UPLOAD_BANDWIDTH_MBPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "http_upload_bandwidth_mbps", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media with an audible audio track, regardless of the volume. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram AUDIBLE_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_audible_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of time spent playing media that has an audio track, with the audio muted. Keyed by audio-only or video presence.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MUTED_PLAY_TIME_PERCENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_muted_play_time_percent", + "type": "RECORD" + }, + { + "description": "Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,02160'; and 'All' will accumulate all percentages. This is reported whenever the decoder stops. (eg. pausing media, encountering an error, changing to a new resource, page goes to the bf-cached or page gets discarded)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_hidden_play_time_percentage", + "type": "RECORD" + }, + { + "description": "Absolute difference of each content process' USS and the mean of USS's, normalized by the mean, in percentage. It will be recorded with the rest of the memory probes when gatherMemory is called, if at least 2 content processes are alive. Example: in case of 4 content processes with USS's: 1G, 500MB, 1G, 1.5G, the reported numbers will be: 0, 50, 0, 50. Which indicates that 2 processes used 50% more or 50% less memory than the avarage and 2 used exactly as much as the avarage.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram MEMORY_DISTRIBUTION_AMONG_CONTENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_distribution_among_content", + "type": "RECORD" + }, + { + "description": "Number of entries in the cache keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_CACHE_ENTRY_COUNT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count", + "type": "RECORD" + }, + { + "description": "Percentage of the entries with the given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_ENTRY_COUNT_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_entry_count_share", + "type": "RECORD" + }, + { + "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_hit_rate_per_cache_size", + "type": "RECORD" + }, + { + "description": "Percentage of the cache size occupied by given content type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram NETWORK_CACHE_SIZE_SHARE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size_share", + "type": "RECORD" + }, + { + "description": "This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: \"persistent\", \"temporary\" or \"default\" (there's also \"private\" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "quotamanager_initialize_repository_number_of_iterations", + "type": "RECORD" + }, + { + "description": "Error code when a Windows sandboxed process fails to launch, keyed by process type and Windows error code. See https://searchfox.org/mozilla-central/search?q=ResultCode++path%3Asandbox_types.h&redirect=true for definitions of the error codes.\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram SANDBOX_FAILED_LAUNCH_KEYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "sandbox_failed_launch_keyed", + "type": "RECORD" + }, + { + "description": "The sampled number of simultaneous running ServiceWorkers in a session, sampled once each 10 seconds (lazily on state change)\nThis metric was generated to correspond to the Legacy Telemetry linear histogram SERVICE_WORKER_RUNNING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_running", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from remote SafeBrowsing gethash lookups. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_COMPLETE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_remote_status2", + "type": "RECORD" + }, + { + "description": "Whether or not an error was encountered while processing a Safe Browsing update (0 = success, 1 = unspecified error, 2 = addition of an already existing prefix, 3 = parser got into an infinite loop, 4 = removal index out of bounds, 5 = checksum mismatch, 6 = missing checksum, 7 = update while shutdown, 8 = cannot find table, 9 = build prefix failure, 10 = write disk failure, 11 = protocol parser error). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_error", + "type": "RECORD" + }, + { + "description": "Network error from SafeBrowsing database updates. (0=sucess, 1=unknown error, 2=already connected, 3=not connected, 4=connection refused,5=net timeout, 6=offline, 7=port access not allowed, 8=net reset, 9=net interrupt, 10=proxy connection refused,11=partial transfer,12=inadequate security,13=unknown host,14=dns lookup queue full,15=unknown proxy host\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_NETWORK_ERROR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_network_error", + "type": "RECORD" + }, + { + "description": "Server HTTP status code from SafeBrowsing database updates. (0=1xx, 1=200, 2=2xx, 3=204, 4=3xx, 5=400, 6=4xx, 7=403, 8=404, 9=408, 10=413, 11=5xx, 12=502|504|511, 13=503, 14=505, 15=Other). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_REMOTE_STATUS2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_remote_status2", + "type": "RECORD" + }, + { + "description": " Whether or not an update timed out (0 = no timeout, 1 = server respond\ntimeout, 2 = overall timeout). Keyed by provider This metric was generated to correspond to the Legacy Telemetry enumerated histogram URLCLASSIFIER_UPDATE_TIMEOUT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_timeout", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_custom_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Cache size in megabytes keyed by cache capacity calculation type. Numbers are sampled periodically, every time 2GB of data is written to the cache.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_CACHE_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_cache_size", + "type": "RECORD" + }, + { + "description": "The size of the HTTP response for a document load, keyed by the page itself or the sum of subresources.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_page_load_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_request_size", + "type": "RECORD" + }, + { + "description": "In TRR channel, the size of the HTTP response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_response_size", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "addons_manager_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nPreviously carried in the Legacy \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "browser_timings_startup_timeline", + "type": "RECORD" + }, + { + "description": "For each recipe ID seen by the Normandy client, its last_modified. This metric was generated to correspond to the Legacy Telemetry scalar normandy.recipe_freshness.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "normandy_recipe_freshness", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline across all components,\nin millis since process creation.\nCombination of\n - `timestamps.startup_timeline`\n - `addons_manager.startup_timeline`\n - `browser.timings.startup_timeline`\n - `session_restore.startup_timeline`\nPreviously instrumented in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_global_startup_timeline", + "type": "RECORD" + }, + { + "description": "Events on the startup timeline, in millis since process creation.\nSee `StartupTimeline.h`\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "timestamps_startup_timeline", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How many addressbooks were set up, keyed by addressbook directory URI scheme.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "addrbook_addressbook_count", + "type": "RECORD" + }, + { + "description": "Count of contacts in all addressbooks, keyed by addressbook directory URI scheme.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "addrbook_contact_count", + "type": "RECORD" + }, + { + "description": "How many calendars were set up, keyed by calendar type Types are e.g. \"storage\", \"caldav\", \"ics\" and various types from add-ons.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "calendar_calendar_count", + "type": "RECORD" + }, + { + "description": "How many read-only calendars were set up, keyed by calendar type. Types are e.g. \"storage\", \"caldav\", \"ics\" and various types from add-ons.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "calendar_read_only_calendar_count", + "type": "RECORD" + }, + { + "description": "Records the GDPR choice on Google Search based on the \"SOCS\" cookie of the Google Search domains. The value could be \"Accept\", \"Reject\" or \"Custom\". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "cookie_banners_google_gdpr_choice_cookie", + "type": "RECORD" + }, + { + "description": "Count of how many accounts were set up, keyed by account type.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "mail_account_count", + "type": "RECORD" + }, + { + "description": "How many bytes each type of folder takes on disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "mail_folder_size_on_disk", + "type": "RECORD" + }, + { + "description": "How many messages each type of folder has.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "mail_folder_total_messages", + "type": "RECORD" + }, + { + "description": "A count of incoming mail accounts using OAuth2 for authentication, keyed by OAuth2 issuer.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "mail_oauth2_provider_count", + "type": "RECORD" + }, + { + "description": "Values of integer preferences.", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "mail_preferences_integer", + "type": "RECORD" + }, + { + "description": "Configuration of the message header display. Customization state; expected values are \"true\" or \"false\". For buttonStyle values are \"default\", \"only-icons\", \"only-text\".\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "STRING" + } + ], + "mode": "REPEATED", + "name": "mail_ui_configuration_message_header", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_string", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time taken (in ms) to open the first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COLD_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_cold_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update DevTools panel when reloading a page. This is keyed by tool ID being currently opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_PAGE_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_toolbox_page_reload_delay", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to open all but first DevTools toolbox. This is keyed by tool ID being opened [inspector, webconsole, jsdebugger, styleeditor, performance, memory, netmonitor, storage, dom].\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WARM_TOOLBOX_OPEN_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "devtools_warm_toolbox_open_delay", + "type": "RECORD" + }, + { + "description": "Time for a completed TRR resolution (msec); Keyed by TRR domain\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_LOOKUP_TIME3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dns_trr_lookup_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to load quota information. Keyed by conditions during quota info loading, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_QUOTA_INFO_LOAD_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_info_load_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the QuotaManager to shutdown. Keyed by conditions during shutdown, see RecordTimeDeltaHelper::Run in https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram QM_SHUTDOWN_TIME_V0.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "dom_quota_shutdown_time", + "type": "RECORD" + }, + { + "description": "LongTask events for parent process (keys: event name): time the event ran in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram EVENT_LONGTASK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "event_longtask", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to load a WebExtensions background page, from when the build function is called to when the page has finished processing the onload event, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_background_page_load_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a BrowserAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_BROWSERACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_browser_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for content scripts from a WebExtension to be injected into a window, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_CONTENT_SCRIPT_INJECTION_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_content_script_injection_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time (keyed by addon id) that an event page has been running before being suspended, or the entire addon shutdown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EVENTPAGE_RUNNING_TIME_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_event_page_running_time_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a WebExtension to start up, from when the startup function is called to when the startup promise resolves, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_EXTENSION_STARTUP_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_extension_startup_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes for a PageAction popup to open, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_PAGEACTION_POPUP_OPEN_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_page_action_popup_open_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a get via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_GET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_get_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "The amount of time it takes to perform a set via storage.local using the IndexedDB backend, keyed by addon id.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBEXT_STORAGE_LOCAL_IDB_SET_MS_BY_ADDONID.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "extensions_timing_storage_local_set_idb_by_addonid", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_engine_creation_success", + "type": "RECORD" + }, + { + "description": "An inference engine was created\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "firefox_ai_runtime_run_inference_success", + "type": "RECORD" + }, + { + "description": "Total time spent playing media in milliseconds, keyed by its content (Audio and video, audio only, video only, audio and video but audio inaudible, audio and video but audio muted).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEDIA_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_media_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing visible video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_VISIBLE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "media_video_visible_play_time", + "type": "RECORD" + }, + { + "description": "The time a connection was in the 0-RTT state\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_0rtt_state_duration", + "type": "RECORD" + }, + { + "description": "The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "netwerk_http3_time_to_reuse_idle_connection", + "type": "RECORD" + }, + { + "description": "The time spent from HttpChannelChild::AsyncOpen to adding the transactionto the nsHttpConnectionMgr, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_ASYNC_OPEN_CHILD_TO_TRANSACTION_PENDING_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_async_open_child_to_transaction_pending_exp", + "type": "RECORD" + }, + { + "description": "The time spent from dns resolution to connect start, in milliseconds, keyed by protocol version and the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DNS_END_TO_CONNECT_START_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_dns_end_to_connect_start_exp", + "type": "RECORD" + }, + { + "description": "The average time between read operations in a HTTP/3 connection, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_avg_read_interval", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http3_tls_handshake", + "type": "RECORD" + }, + { + "description": "The time between requestStart and responseEnd, keyed by the server header\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_http_fetch_duration", + "type": "RECORD" + }, + { + "description": "The time spent relaying response completion from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_END_PARENT_TO_CONTENT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_end_parent_to_content", + "type": "RECORD" + }, + { + "description": "The time spent relaying response start from the socket thread of the parent process to the content process, in milliseconds, keyed by the classOfService flags\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RESPONSE_START_PARENT_TO_CONTENT_EXP_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_response_start_parent_to_content_exp", + "type": "RECORD" + }, + { + "description": "In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_sup_http3_tcp_connection", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/1.1)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h1", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/2)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h2", + "type": "RECORD" + }, + { + "description": "Time (in seconds) that it takes for an idle TRR connection to be closed by the server (HTTP/3)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "network_trr_idle_close_time_h3", + "type": "RECORD" + }, + { + "description": "In TRR channel, overall load time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_complete_load", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the DNS request being issued to the response.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_end", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from connection open to the DNS request being issued.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_dns_start", + "type": "RECORD" + }, + { + "description": "Time for a successful DoH request, from AsyncOpen to ReturnData\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_fetch_duration", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from first byte of request sent to last byte of response received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of reply received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from open to first byte of request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tcp_connection", + "type": "RECORD" + }, + { + "description": "In TRR channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "networking_trr_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes for a ORB JavaScript validator to complete a validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_JAVASCRIPT_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_javascript_validation", + "type": "RECORD" + }, + { + "description": "Time (in ms) that it takes to receive data for ORB JavaScript validation, including IPC to the validator actor.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram ORB_RECEIVE_DATA_FOR_VALIDATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "orb_receive_data_for_validation", + "type": "RECORD" + }, + { + "description": "The time from a top-level document's HTTP channel open to the first byte of the reply is received (ms). Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_BYTE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_byte", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. Keyed by TRR domain for DoH or 'Native' otherwise\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_dns_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses HTTP3. It is keyed based on whether a \"priority\" header has been received.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram H3P_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_h3p_page_load_time", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. This is collected only on page load where the main document uses or suppports HTTP3\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_PERF_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "perf_http3_page_load_time", + "type": "RECORD" + }, + { + "description": "Time it takes for a request that has been upgraded with HTTPS-Only Mode to complete, broken down by top-level (top) / sub-resource (sub) and status\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTPS_ONLY_MODE_UPGRADE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "security_https_only_mode_upgrade_time", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch handler finished executing and when we reset the network channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_channel_reset", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the fetch event is dispatched by the Service Worker and before we execute the event listeners.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_dispatch", + "type": "RECORD" + }, + { + "description": "Time (in ms) measured between when the respondWith promise resolves and when we provide the response through the intercepted channel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_event_finish_synthesized_response", + "type": "RECORD" + }, + { + "description": "Time delta (ms) between when a network request is intercepted in the parent process and the service worker provides a response.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "service_worker_fetch_interception_duration", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling, keyed by the key exchange algorithm used\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "ssl_time_until_handshake_finished_keyed_by_ka", + "type": "RECORD" + }, + { + "description": "Time spent per classifier update (ms), keyed by the name of the provider.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_KEYED_UPDATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_cl_keyed_update_time", + "type": "RECORD" + }, + { + "description": "Server response time to getHash request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_COMPLETE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_complete_server_response_time", + "type": "RECORD" + }, + { + "description": "Server response time to update request (ms). Keyed by provider\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_UPDATE_SERVER_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "urlclassifier_update_server_response_time", + "type": "RECORD" + }, + { + "description": "Tracking how long a Worker thread is blocked when a sync operation is executed on the main-thread.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYNC_WORKER_OPERATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "workers_sync_worker_operation", + "type": "RECORD" + }, + { + "description": "How long it took to rebuild the XPI Database\nper reason it was rebuilt.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "xpi_database_rebuilds", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "labeled_timing_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Heap memory used by cert_storage.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_storage_memory", + "type": "RECORD" + }, + { + "description": "Amount of data read from the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_size", + "type": "RECORD" + }, + { + "description": "Amount of data written to the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_size", + "type": "RECORD" + }, + { + "description": "The number and size of the IPC buffers being received over FOG IPC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_buffer_sizes", + "type": "RECORD" + }, + { + "description": "The size of the database file at startup.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_size", + "type": "RECORD" + }, + { + "description": "The size of pings that exceeded the maximum ping size allowed for upload.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_discarded_exceeding_pings_size", + "type": "RECORD" + }, + { + "description": "The size of the pending pings directory upon initialization of Glean.\nThis does not include the size of the deletion request pings directory.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_pending_pings_directory_size", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: Number of bytes removed from dynamic table to make room for 1 new item\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_BYTES_EVICTED_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_bytes_evicted_decompressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_COMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_compressor", + "type": "RECORD" + }, + { + "description": "HPACK: peak size in bytes of the table\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HPACK_PEAK_SIZE_DECOMPRESSOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "hpack_peak_size_decompressor", + "type": "RECORD" + }, + { + "description": "HTTP: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_kbread_per_conn2", + "type": "RECORD" + }, + { + "description": "AVIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_AVIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_avif", + "type": "RECORD" + }, + { + "description": "GIF image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_GIF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_gif", + "type": "RECORD" + }, + { + "description": "JPEG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_JPEG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_jpeg", + "type": "RECORD" + }, + { + "description": "PNG image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_PNG.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_png", + "type": "RECORD" + }, + { + "description": "WebP image decode speed (Kbytes/sec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_SPEED_WEBP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_speed_webp", + "type": "RECORD" + }, + { + "description": "Size of the GC nursery in bytes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_nursery_bytes", + "type": "RECORD" + }, + { + "description": "Number of bytes recovered by compaction.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mail_compact_space_recovered", + "type": "RECORD" + }, + { + "description": "Heap memory allocated (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_HEAP_ALLOCATED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_heap_allocated", + "type": "RECORD" + }, + { + "description": "Memory used for uncompressed, in-use content images (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_images_content_used_uncompressed", + "type": "RECORD" + }, + { + "description": "Memory used by the garbage-collected JavaScript heap (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_JS_GC_HEAP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_js_gc_heap", + "type": "RECORD" + }, + { + "description": "Over-allocation due to PHC's rounding (aka internal fragmentation). Measured in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_PHC_SLOP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_phc_slop", + "type": "RECORD" + }, + { + "description": "Resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_FAST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_fast", + "type": "RECORD" + }, + { + "description": "Peak resident memory size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_RESIDENT_PEAK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_resident_peak", + "type": "RECORD" + }, + { + "description": "Memory used by SQLite (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_STORAGE_SQLITE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_storage_sqlite", + "type": "RECORD" + }, + { + "description": "Total Memory Across All Processes (KB) (inaccurate WRT shared memory. See MemoryTelemetry.cpp)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_total", + "type": "RECORD" + }, + { + "description": "Unique Set Size (KB) by process type\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique", + "type": "RECORD" + }, + { + "description": "Unique Set Size of Content Process at Startup (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_UNIQUE_CONTENT_STARTUP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_unique_content_startup", + "type": "RECORD" + }, + { + "description": "Virtual memory size (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize", + "type": "RECORD" + }, + { + "description": "Maximum-sized block of contiguous virtual memory (KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_VSIZE_MAX_CONTIGUOUS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_vsize_max_contiguous", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide not to race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_NOT_RACE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_not_race", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and cache wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_CACHE_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_cache_win", + "type": "RECORD" + }, + { + "description": "Amount of bytes received when we decide to race cache with network and network wins.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_BANDWIDTH_RACE_NETWORK_WIN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_bandwidth_race_network_win", + "type": "RECORD" + }, + { + "description": "Size of the metadata in bytes parsed from the disk.", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_size", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram segment size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_segment_size_sent", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_received", + "type": "RECORD" + }, + { + "description": "HTTP3 UDP datagram size sent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_3_udp_datagram_size_sent", + "type": "RECORD" + }, + { + "description": "Size of deserialized data, in bytes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_size", + "type": "RECORD" + }, + { + "description": "SPDY: Recvd Chunk Size (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CHUNK_RECVD.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_chunk_recvd", + "type": "RECORD" + }, + { + "description": "Size of continued H2 headers in bytes.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_CONTINUED_HEADERS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_continued_headers", + "type": "RECORD" + }, + { + "description": "SPDY: KB read per connection\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_KBREAD_PER_CONN2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_kbread_per_conn", + "type": "RECORD" + }, + { + "description": "H2: Settings Initial Window (rounded to KB)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SETTINGS_IW.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_settings_iw", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Reply Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_REPLY_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_reply_size", + "type": "RECORD" + }, + { + "description": "SPDY: SYN Frame Header Size\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SPDY_SYN_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "spdy_syn_size", + "type": "RECORD" + }, + { + "description": "plaintext bytes read before a server certificate authenticated\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_BYTES_BEFORE_CERT_CALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_bytes_before_cert_callback", + "type": "RECORD" + }, + { + "description": "Size of font loaded (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size", + "type": "RECORD" + }, + { + "description": "Size of all fonts loaded at page load (kb)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_SIZE_PER_PAGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_size_per_page", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_distribution", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The list of currently enabled addons.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, addonType, updateDay, scope,\nisSystem, isWebExtension, and multiprocessCompatible. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeAddons. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `active_addons` metric.\n", + "mode": "NULLABLE", + "name": "addons_active_addons", + "type": "JSON" + }, + { + "description": "The list of currently enabled Gecko Media Plugins.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id and version. All the other\nfields become present shortly after the `sessionstore-windows-restored`\nobserver topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.activeGMPlugins. Like its counterpart, it will only have data in\nFirefox Desktop and at times and on platforms where the environment would\nhave values.\n", + "mode": "NULLABLE", + "name": "addons_active_g_m_plugins", + "type": "JSON" + }, + { + "description": "Most recent exception reported by the Addons Manager this app session.\nPreviously reported in the \"main\" ping `simpleMeasurements`.\n```text\n{\n module: string module name,\n context: string context, like the method name,\n message: string message of the exception,\n file: the file that the exception occured in,\n line: the line number the exception was thrown from,\n}\n```\n", + "mode": "NULLABLE", + "name": "addons_manager_exception", + "type": "JSON" + }, + { + "description": "The currently active theme.\n\nSome of the addon fields are not available during startup. The fields\nthat will always be present are id, version, updateDay, and scope. All\nthe other fields become present shortly after the\n`sessionstore-windows-restored` observer topic is notified.\n\nThis metric is an echo of the Legacy Telemetry Environment field\naddons.theme. Like its counterpart, it will only have data in Firefox\nDesktop and at times and on platforms where the environment would have\nvalues.\n\nNOTE: this metric is available in both `metrics` and `addons` pings. However\nthe `addons` ping is the preferred source of data for add-ons related analyses,\nwhereas the `metrics` ping is better suited for analyses that correlates other\nmetrics with the add-ons listed in the `theme` metric.\n", + "mode": "NULLABLE", + "name": "addons_theme", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `files`: An array of objects, each containing:\n - `fil", + "mode": "NULLABLE", + "name": "fog_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the primary (and secondary, if available) graphics adapter.\n* description - e.g. \"Intel(R) HD Graphics 4600\"\n* vendorID - Hex vendor id\n* deviceID - Hex device id\n* subsysID - Hex subsys id\n* RAM - reported RAM in megabytes.\n* driver - Platform-specific driver information.\n* driverVendor - Driver vendor information.\n* driverVersion - Driver version.\n* driverDate - Driver date.\n* GPUActive - Whether this adapter is active.\n", + "mode": "NULLABLE", + "name": "gfx_adapters", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D2D compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* version - The feature version, either \"1.0\" or \"1.1\"\n", + "mode": "NULLABLE", + "name": "gfx_features_d2d", + "type": "JSON" + }, + { + "description": "(Windows-only) information about the D3D11 compositor.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n* warp - Software rendering (WARP) mode was chosen.\n* textureSharing - Whether or not texture sharing works.\n* version - The D3D11 device feature level.\n* blocklisted - Whether D3D11 is blocklisted; use to see whether WARP\n was blacklist induced or driver-failure induced.\n", + "mode": "NULLABLE", + "name": "gfx_features_d3d11", + "type": "JSON" + }, + { + "description": "Information about the out-of-process compositing (\"GPU Process\") GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default and it's in use.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_gpu_process", + "type": "JSON" + }, + { + "description": "Information about the hardware acceleration GFX feature.\n(i.e. whether we try using the GPU)\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_hw_compositing", + "type": "JSON" + }, + { + "description": "Information about the Off Main Thread Painting GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_omtp", + "type": "JSON" + }, + { + "description": "Information about the OpenGL Compositing GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_opengl_compositing", + "type": "JSON" + }, + { + "description": "Information about the Webrender GFX feature.\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_webrender", + "type": "JSON" + }, + { + "description": "Information about the native OS compositor (CA, DCamp, etc.).\n* status - One of\n * \"unused\" - This feature has not been requested.\n * \"unavailable\" - Safe Mode or OS restriction prevents use.\n * \"blocked\" - An internal condition (such as safe mode) prevents use.\n * \"blocklisted\" - Blocked due to a blocklist restriction.\n * \"denied\" - Blocked due to allowlist restrictions.\n * \"disabled\" - User explicitly disabled this default feature.\n * \"failed\" - Feature failed to initialize.\n * \"available\" - User has this feature available by default.\n optionally including \":\" followed by a reason\n e.g. \"FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973\".\n", + "mode": "NULLABLE", + "name": "gfx_features_wr_compositor", + "type": "JSON" + }, + { + "description": "Information about connected monitors.\nOn Linux only a single monitor is returned for the primary screen.\n* screenWidth - Screen width in pixels\n* screenHeight - Screen height in pixels\n* defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen.\n* contentsScaleFactor - The number of device pixels per desktop pixel for this screen.\n* refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown.\n* pseudoDislay - (Windows only) Whether the screen is a pseudo display.\n", + "mode": "NULLABLE", + "name": "gfx_monitors", + "type": "JSON" + }, + { + "description": "The size of the db file during specific phases of initialization.\n", + "mode": "NULLABLE", + "name": "glean_database_load_sizes", + "type": "JSON" + }, + { + "description": "Information about the data directories and files used by FOG.\n\nStructure is an array of objects, each containing the following properties:\n- `dir_name`: The name of the directory. This is the subdirectory name relative to the\n FOG data directory and should only include \"db\", \"events\", and \"pending_pings\".\n- `dir_exists`: Whether the directory exists. This should only be false on the first\n run of FOG, or if the directory was deleted.\n- `dir_created`: The creation time of the directory, in seconds since the unix epoch. If\n the directory does not exist, this will be `null` and if the time cannot be determined,\n it will default to `0`.\n- `dir_modified`: The last modification time of the directory, in seconds since the unix\n epoch. If the directory does not exist, this will be `null` and if the time cannot be\n determined, it will default to `0`.\n- `file_count`: The number of files in the directory. If the directory does not exist,\n this will be `0`.\n- `error_message`: If there was an error accessing the di", + "mode": "NULLABLE", + "name": "glean_health_data_directory_info", + "type": "JSON" + }, + { + "description": "Information about the disk the application binary is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_binary", + "type": "JSON" + }, + { + "description": "Information about the disk the profile is stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_profile", + "type": "JSON" + }, + { + "description": "Information about the disk the system files are stored on.\nWindows only.\n* model - The disk's self-reported model string\n* revision - The disk's self-reported revision string\n* diskType - Either \"HDD\" or \"SSD\"\n", + "mode": "NULLABLE", + "name": "hdd_system", + "type": "JSON" + }, + { + "description": "Values of basic account preferences.", + "mode": "NULLABLE", + "name": "mail_account_preferences", + "type": "JSON" + }, + { + "description": "The fossilized remains of the Legacy Telemetry Environment's\n`settings.userPrefs` structure.\nA list of pref names and values.\nSome values will be the string \"\" to obscure the value.\nDo not add more prefs to this list.\nPrefer instead to instrument your prefs directly with individual metrics.\nSee Environment.sys.mjs' `DEFAULT_ENVIRONMENT_PREFS`.\n", + "mode": "NULLABLE", + "name": "preferences_user_prefs", + "type": "JSON" + } + ], + "mode": "NULLABLE", + "name": "object", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Unsigned int tracking the user's prefered background color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_background", + "type": "INT64" + }, + { + "description": "Unsigned int tracking the user's prefered foreground color \\ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground.\n", + "mode": "NULLABLE", + "name": "a11y_hcm_foreground", + "type": "INT64" + }, + { + "description": "Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes.\n", + "mode": "NULLABLE", + "name": "bounce_tracking_protection_mode", + "type": "INT64" + }, + { + "description": "The total number of trust objects in cert9.db\n", + "mode": "NULLABLE", + "name": "cert_verifier_trust_obj_count", + "type": "INT64" + }, + { + "description": "This scalar reports the value of the content blocking category pref (0 = \"standard\", 1 = \"strict\", 2 = \"custom\", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category.\n", + "mode": "NULLABLE", + "name": "contentblocking_category", + "type": "INT64" + }, + { + "description": "The number of entries stored in the AlternateServices nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_alternate_services", + "type": "INT64" + }, + { + "description": "The number of entries stored in the ClientAuthRememberList nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_client_auth_remember_list", + "type": "INT64" + }, + { + "description": "The number of entries stored in the SiteSecurityServiceState nsIDataStorage", + "mode": "NULLABLE", + "name": "data_storage_site_security_service_state", + "type": "INT64" + }, + { + "description": "Maximum number of processes that will be launched for regular web content.\nSee `nsIXULRuntime.maxWebProcessCount`\n", + "mode": "NULLABLE", + "name": "e10s_multi_processes", + "type": "INT64" + }, + { + "description": "Max amount of DNR rules being evaluated.\n", + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_count_max", + "type": "INT64" + }, + { + "description": "The amount of bytes written to the extensions StartupCache file.\n", + "mode": "NULLABLE", + "name": "extensions_startup_cache_write_bytelength", + "type": "INT64" + }, + { + "description": "Value of the configurable rate limit, in pings per minute, for Glean pings as set at init.\n", + "mode": "NULLABLE", + "name": "fog_max_pings_per_minute", + "type": "INT64" + }, + { + "description": "Count at store time how many address autofill profiles user has. This metric was generated to correspond to the Legacy Telemetry scalar formautofill.addresses.autofill_profiles_count.\n", + "mode": "NULLABLE", + "name": "formautofill_addresses_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Count at store time how many credit card autofill profiles the user has.\n", + "mode": "NULLABLE", + "name": "formautofill_creditcards_autofill_profiles_count", + "type": "INT64" + }, + { + "description": "Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_ram", + "type": "INT64" + }, + { + "description": "Amount of displays connected to the device (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_count", + "type": "INT64" + }, + { + "description": "Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_height", + "type": "INT64" + }, + { + "description": "Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_display_primary_width", + "type": "INT64" + }, + { + "description": "A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield.\n", + "mode": "NULLABLE", + "name": "gfx_hdr_windows_display_colorspace_bitfield", + "type": "INT64" + }, + { + "description": "The frame rate in Hz, typically 60 or more.\n", + "mode": "NULLABLE", + "name": "gfx_target_frame_rate", + "type": "INT64" + }, + { + "description": "The number of total GPU process launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_total_launch_attempts", + "type": "INT64" + }, + { + "description": "The number of consecutive unstable launch attempts.\n", + "mode": "NULLABLE", + "name": "gpu_process_unstable_launch_attempts", + "type": "INT64" + }, + { + "description": "Whether, and in what mode, the launcher process is enabled (or not).\nSee `nsIXULRuntime.launcherProcessState`\n", + "mode": "NULLABLE", + "name": "launcher_process_state", + "type": "INT64" + }, + { + "description": "The value of this scalar indicates the result of the last heuristic run. 0: \"incomplete\" 1: \"pass\" 2: \"opt-out\" 3: \"manually-disabled\" 4: \"manually-enabled\" 5: \"enterprise-disabled\" 6: \"enterprise- present\" 7: \"enterprise-enabled\" 8: \"vpn\" 9: \"proxy\" 10: \"nrpt\" 11: \"parental\" 12: \"modifiedRoots\" 13: \"thirdPartyRoots\" 14: \"google\" 15: \"youtube\" 16: \"zscaler\" 17: \"canary\" 18: \"ignored\" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result.\n", + "mode": "NULLABLE", + "name": "networking_doh_heuristics_result", + "type": "INT64" + }, + { + "description": "A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage.\n", + "mode": "NULLABLE", + "name": "networking_https_rr_prefs_usage", + "type": "INT64" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "INT64" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "INT64" + }, + { + "description": "The number of third-party PKCS#11 modules loaded.", + "mode": "NULLABLE", + "name": "pkcs11_third_party_modules_loaded", + "type": "INT64" + }, + { + "description": "A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count.\n", + "mode": "NULLABLE", + "name": "policies_count", + "type": "INT64" + }, + { + "description": "The day the profile was created,\nas determined by checking various file metadata in the profile directory.\nNot considered to be particularly reliable in practice.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_creation_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was first used,\nas determined by noticing that `times.json` wasn't present.\nPrefer `client_info.first_run_date` in most cases.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_first_use_date", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was recovered from backup,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_recovered_from_backup", + "type": "INT64" + }, + { + "description": "Optional.\nThe day the profile was most recently reset,\npersisted in `times.json`.\ne.g. 16446\n", + "mode": "NULLABLE", + "name": "profiles_reset_date", + "type": "INT64" + }, + { + "description": "The number of saved logins, including those that cannot be decrypted.\nSimilar to the legacy telemetry histogram PWMGR_NUM_SAVED_PASSWORDS.\n", + "mode": "NULLABLE", + "name": "pwmgr_num_saved_passwords", + "type": "INT64" + }, + { + "description": "The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords.\n", + "mode": "NULLABLE", + "name": "pwmgr_potentially_breached_passwords", + "type": "INT64" + }, + { + "description": "The current win32k.sys lockdown state.\nPossible values are defined in the ContentWin32kLockdownState enum.\nReported even on non-Windows machines.\n", + "mode": "NULLABLE", + "name": "sandbox_content_win32k_lockdown_state", + "type": "INT64" + }, + { + "description": "The current sandbox level.\nThe \"security.sandbox.content.level\" preference rounded up to the current minimum allowed level.\n0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set.\n", + "mode": "NULLABLE", + "name": "sandbox_effective_content_process_level", + "type": "INT64" + }, + { + "description": "This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count.\n", + "mode": "NULLABLE", + "name": "startup_profile_count", + "type": "INT64" + }, + { + "description": "Big (or Performance) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_big_cores", + "type": "INT64" + }, + { + "description": "CPU family.\n", + "mode": "NULLABLE", + "name": "system_cpu_family", + "type": "INT64" + }, + { + "description": "L2 cache size (only on Windows and Mac).\n", + "mode": "NULLABLE", + "name": "system_cpu_l2_cache", + "type": "INT64" + }, + { + "description": "L3 cache size.\n", + "mode": "NULLABLE", + "name": "system_cpu_l3_cache", + "type": "INT64" + }, + { + "description": "Little (or Efficient) CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_little_cores", + "type": "INT64" + }, + { + "description": "Logical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_logical_cores", + "type": "INT64" + }, + { + "description": "Medium CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_medium_cores", + "type": "INT64" + }, + { + "description": "CPU model.\n", + "mode": "NULLABLE", + "name": "system_cpu_model", + "type": "INT64" + }, + { + "description": "Physical CPU cores.\n", + "mode": "NULLABLE", + "name": "system_cpu_physical_cores", + "type": "INT64" + }, + { + "description": "CPU speed in MHz.\n", + "mode": "NULLABLE", + "name": "system_cpu_speed", + "type": "INT64" + }, + { + "description": "CPU stepping.\n", + "mode": "NULLABLE", + "name": "system_cpu_stepping", + "type": "INT64" + }, + { + "description": "The physical memory size in MB (2^20 bytes).\ne.g. 32211\n", + "mode": "NULLABLE", + "name": "system_memory", + "type": "INT64" + }, + { + "description": "The Windows service pack's major version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_major", + "type": "INT64" + }, + { + "description": "The Windows service pack's minor version, according to WindowsVersionInfo.\nWindows only.\ne.g. 0\n", + "mode": "NULLABLE", + "name": "system_os_service_pack_minor", + "type": "INT64" + }, + { + "description": "The Windows build number, according to WindowsVersionInfo.\nWindows only.\ne.g. 26100\nExpected in most cases to be identical to `client_info.windows_build_number`.\n", + "mode": "NULLABLE", + "name": "system_os_windows_build_number", + "type": "INT64" + }, + { + "description": "The Windows update build revision number, according to\n`SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion`.\nWindows only.\ne.g. 3775\n", + "mode": "NULLABLE", + "name": "system_os_windows_ubr", + "type": "INT64" + }, + { + "description": "The size of the user-mode portion of the virtual address space of the parent process.\nWindows only.\ne.g. 134217728\n", + "mode": "NULLABLE", + "name": "system_virtual_memory", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first content window paint, in milliseconds since process start. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint", + "type": "INT64" + }, + { + "description": "Record the timestamp of the first main window paint, in milliseconds since process start. Intended to replace first_paint since first_paint is broken. This metric was generated to correspond to the Legacy Telemetry scalar timestamps.first_paint_two.\n", + "mode": "NULLABLE", + "name": "timestamps_first_paint_two", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "quantity", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "How often a certificate signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "How often a certificate's trust is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "cert_trust_cache_hits", + "type": "RECORD" + }, + { + "description": "How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer", + "type": "RECORD" + }, + { + "description": "How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgraded_on_timer_schemeless", + "type": "RECORD" + }, + { + "description": "This counts the number of times a cookie is set already expires but it would not if we considered the server time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_expired_without_server_time", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_foreign_partitioned", + "type": "RECORD" + }, + { + "description": "This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_set_cookie_partitioned", + "type": "RECORD" + }, + { + "description": "The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "parsing_svg_unusual_pcdata", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_encodings", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_other", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_rid_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_fail_stale_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_length_changed", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_getparameters", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_setparameters_warn_no_transactionid", + "type": "RECORD" + }, + { + "description": "The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "rtcrtpsender_used_sendencodings", + "type": "RECORD" + }, + { + "description": "How often an SCT signature to be verified is in the cache already.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "sct_signature_cache_hits", + "type": "RECORD" + }, + { + "description": "The rate of failed translations requests.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "translations_error_rate", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the built-in roots module.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_built_in_roots_module", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the NSS cert DB.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_nss_cert_db", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from preloaded intermediates.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_preloaded_intermediates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a third-party certificate from the OS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_third_party_certificates", + "type": "RECORD" + }, + { + "description": "How many successfully-built certificate chains used a certificate from the TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "denominator", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "numerator", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "verification_used_cert_from_tls_handshake", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "rate", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators.\n", + "mode": "NULLABLE", + "name": "a11y_instantiators", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_softblocks_source", + "type": "STRING" + }, + { + "description": "The source of the RemoteSettings attachment that holds the bloom filter. Possible values are \"dump_match\", \"cache_match\", \"remote_match\",\"dump_fallback\", \"cache_fallback\", \"unknown\". \"dump_match\", \"cache_match\" and \"remote_match\" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: \"dump\" means packaged with the application, \"remote\" means a freshly downloaded bloomfilter, \"cache\" means a previously downloaded bloomfilter. \"dump_fallback\" and \"cache_fallback\" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). \"unknown\" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies.\n", + "mode": "NULLABLE", + "name": "blocklist_mlbf_source", + "type": "STRING" + }, + { + "description": "The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_build_id", + "type": "STRING" + }, + { + "description": "The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gecko_version", + "type": "STRING" + }, + { + "description": "Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_description", + "type": "STRING" + }, + { + "description": "Graphics adapter device identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_device_id", + "type": "STRING" + }, + { + "description": "Graphics adapter driver date (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_date", + "type": "STRING" + }, + { + "description": "List of graphics adapter driver files (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_files", + "type": "STRING" + }, + { + "description": "Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_vendor", + "type": "STRING" + }, + { + "description": "Graphics adapter driver version (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_driver_version", + "type": "STRING" + }, + { + "description": "Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_subsystem_id", + "type": "STRING" + }, + { + "description": "Graphics adapter vendor identification (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_adapter_primary_vendor_id", + "type": "STRING" + }, + { + "description": "The content backend (e.g. \"Direct2D 1.1\", \"Skia\", \"Cairo\").\n", + "mode": "NULLABLE", + "name": "gfx_content_backend", + "type": "STRING" + }, + { + "description": "Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_feature_webrender", + "type": "STRING" + }, + { + "description": "Layers backend for compositing.\nOne of \"d3d9\", \"d3d11\", \"opengl\", \"basic\", or \"none\".\n\"none\" indicates no compositors have been created.\n", + "mode": "NULLABLE", + "name": "gfx_features_compositor", + "type": "STRING" + }, + { + "description": "Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol.\n", + "mode": "NULLABLE", + "name": "gfx_linux_window_protocol", + "type": "STRING" + }, + { + "description": "Name of the graphics compositor in use. Possible values are \"opengl, d3d11, client, webrender or basic\" (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_compositor", + "type": "STRING" + }, + { + "description": "The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name).\n", + "mode": "NULLABLE", + "name": "gfx_status_last_compositor_gecko_version", + "type": "STRING" + }, + { + "description": "The text scale factor.\n", + "mode": "NULLABLE", + "name": "gfx_text_scale_factor", + "type": "STRING" + }, + { + "description": "An experimentation identifier derived and provided by the application\nfor the purpose of experimentation enrollment.\n", + "mode": "NULLABLE", + "name": "glean_client_annotation_experimentation_id", + "type": "STRING" + }, + { + "description": "If there was an error loading the RKV database, record it.\n", + "mode": "NULLABLE", + "name": "glean_database_rkv_load_error", + "type": "STRING" + }, + { + "description": "Current status of the GPU process feature\n", + "mode": "NULLABLE", + "name": "gpu_process_feature_status", + "type": "STRING" + }, + { + "description": "Records the detected home region of the user. This is the general region of the user's machine.\nIf a machine moves location, there is a minimum 2-week delay before this will be updated.\nSee the [Region documentation](https://firefox-source-docs.mozilla.org/toolkit/modules/toolkit_modules/Region.html) for more information about updates.\n", + "mode": "NULLABLE", + "name": "region_home_region", + "type": "STRING" + }, + { + "description": "The version of the profiles.ini database loaded during startup. A value of \"0\" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version.\n", + "mode": "NULLABLE", + "name": "startup_profile_database_version", + "type": "STRING" + }, + { + "description": "How the profile was selected during startup. One of the following reasons:\n unknown:\n Generally should not happen, set as a default in case no other reason\n occured.\n profile-manager:\n The profile was selected by the profile manager.\n profile-selector:\n The profile was selected by the profile selector window.\n profile-reset:\n The profile was selected for reset, normally this would mean a restart.\n restart:\n The user restarted the application, the same profile as previous will\n be used.\n argument-profile:\n The profile was selected by the --profile command line argument.\n argument-p:\n The profile was selected by the -p command line argument.\n firstrun-claimed-default:\n A first run of a dedicated profiles build chose the old default\n profile to be the default for this install.\n firstrun-skipped-default:\n A first run of a dedicated profiles build skipped over the old default\n profile and created a new profile.\n restart-claimed-default:\n A first run of a dedicate", + "mode": "NULLABLE", + "name": "startup_profile_selection_reason", + "type": "STRING" + }, + { + "description": "The `hw.model` of the hardware running this software.\nMac only.\ne.g. \"MacBookPro14,1\"\n", + "mode": "NULLABLE", + "name": "system_apple_model_id", + "type": "STRING" + }, + { + "description": "The user readable CPU name. (e.g. \"Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz\")\n", + "mode": "NULLABLE", + "name": "system_cpu_name", + "type": "STRING" + }, + { + "description": "The CPU vendor (e.g. \"GenuineIntel\").\n", + "mode": "NULLABLE", + "name": "system_cpu_vendor", + "type": "STRING" + }, + { + "description": "The Operating System's distribution, according to sysinfo.\nLinux only.\ne.g. \"Linuxmint\"\n", + "mode": "NULLABLE", + "name": "system_os_distro", + "type": "STRING" + }, + { + "description": "The Operating System's distribution's version, according to sysinfo.\nLinux only.\ne.g. \"22\"\n", + "mode": "NULLABLE", + "name": "system_os_distro_version", + "type": "STRING" + }, + { + "description": "The Operating System's local, according to ospreferences.\ne.g. \"en-US\"\n", + "mode": "NULLABLE", + "name": "system_os_locale", + "type": "STRING" + }, + { + "description": "The Operating System's name, according to sysinfo.\ne.g. \"Windows_NT\"\nExpected in most cases to be identical to `client_info.os`.\n", + "mode": "NULLABLE", + "name": "system_os_name", + "type": "STRING" + }, + { + "description": "The Operating System's version, according to sysinfo.\ne.g. \"6.3\"\nExpected in most cases to be identical to `client_info.os_version`.\n", + "mode": "NULLABLE", + "name": "system_os_version", + "type": "STRING" + }, + { + "description": "The full application package name without any of the components that might change\nduring the life cycle of the app (such as the version number or the architecture).\nUniquely identifies the application within one Windows installation.\nWindows only.\nOnly included if it begins with \"Mozilla.\" or \"MozillaCorporation.\".\ne.g. \"Mozilla.Firefox_n80bbvh6b1yt2\"\n", + "mode": "NULLABLE", + "name": "system_win_package_family_name", + "type": "STRING" + }, + { + "description": "The update channel according to defaults,\nincluding partner bits.\ne.g. \"nightly-cck\"\n", + "mode": "NULLABLE", + "name": "update_settings_channel", + "type": "STRING" + }, + { + "description": "A string tag identifying the binary ABI of the current processor and\ncompiler vtable. This is taken from the TARGET_XPCOM_ABI configure\nvariable. It may not be available on all platforms, especially\nunusual processor or compiler combinations.\n\nThe result takes the form -, for example:\n - x86-msvc\n - ppc-gcc3\n\nThis value should almost always be used in combination with the\noperating system.\n", + "mode": "NULLABLE", + "name": "xpcom_abi", + "type": "STRING" + }, + { + "description": "Reason for XPI Database startup error.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_startup_error", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string", + "type": "RECORD" + }, + { + "fields": [ + { + "mode": "REPEATED", + "name": "glean_ping_uploader_capabilities", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_accept_languages", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_app_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_available_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_regional_prefs_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_requested_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "intl_system_locales", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "mail_notification_enabled_actions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "mail_ui_configuration_folder_tree_modes", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "pkcs11_third_party_module_profile_entries", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "system_cpu_extensions", + "type": "STRING" + }, + { + "mode": "REPEATED", + "name": "xpi_database_startup_load_reasons", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "string_list", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Stack of XPI Database `asyncLoadDB` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_load", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `saveChanges` call happening while the XPI provider\nis closing.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_late_stack", + "type": "STRING" + }, + { + "description": "Stack of XPI Database `syncLoadDB` call.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "mode": "NULLABLE", + "name": "xpi_database_sync_stack", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "text2", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "Time to load and deserialize the extensions startupCache data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "extensions_startup_cache_load_time", + "type": "RECORD" + }, + { + "description": "Time the FOG initialization takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "fog_initialization", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_loading_certs_task", + "type": "RECORD" + }, + { + "description": "The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "time_unit", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "NULLABLE", + "name": "networking_nss_initialization", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timespan", + "type": "RECORD" + }, + { + "fields": [ + { + "description": "The amount of time taken to update the accessibility tree (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram A11Y_TREE_UPDATE_TIMING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "a11y_tree_update_timing", + "type": "RECORD" + }, + { + "description": "Server response time to remote lookup request (ms).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram APPLICATION_REPUTATION_REMOTE_LOOKUP_RESPONSE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "application_reputation_remote_lookup_response_time", + "type": "RECORD" + }, + { + "description": "For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "bounce_tracking_protection_purge_duration", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to open a new browser window (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_NEW_WINDOW_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_new_window", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Page reloads and loading of about: pages are not included.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_LOAD_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_load", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when using the LOAD_RELOAD_NORMAL flag\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_NORMAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_normal", + "type": "RECORD" + }, + { + "description": "Firefox: Time taken to reload a page (ms) when caches are skipped\nThis metric was generated to correspond to the Legacy Telemetry linear histogram FX_PAGE_RELOAD_SKIP_CACHE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_page_reload_skip_cache", + "type": "RECORD" + }, + { + "description": "Firefox: Time in ms spent on switching tabs in response to a tab click\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_TAB_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "browser_timings_tab_click", + "type": "RECORD" + }, + { + "description": "The time it takes to fail to verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to successfully verify a certificate in a TLS handshake.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cert_verification_time_success", + "type": "RECORD" + }, + { + "description": "Time spent per daily cookie purging activity, in milliseconds. This measures the time for all batch iterations of that day.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COOKIE_PURGING_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_duration", + "type": "RECORD" + }, + { + "description": "How much time (in hours) passed between the current cookie purging activity and the one before that (cookie purging is run on 'daily idle')\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_INTERVAL_HOURS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_interval_hours", + "type": "RECORD" + }, + { + "description": "The time remaining until expiration per user interaction permissions of trackers at the time of purging, in days (one record per tracker, not averaged).\nThis metric was generated to correspond to the Legacy Telemetry linear histogram COOKIE_PURGING_TRACKERS_USER_INTERACTION_REMAINING_DAYS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cookie_purging_trackers_user_interaction_remaining_days", + "type": "RECORD" + }, + { + "description": "Time spent on one asynchronous SnowWhite freeing (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_async_snow_white_freeing", + "type": "RECORD" + }, + { + "description": "Pause time for asynchronous deferred finalization (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEFERRED_FINALIZE_ASYNC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_deferred_finalize_async", + "type": "RECORD" + }, + { + "description": "Max time spent on one forget skippable (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FORGET_SKIPPABLE_MAX.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_forget_skippable_max", + "type": "RECORD" + }, + { + "description": "Full pause time for one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_FULL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_full", + "type": "RECORD" + }, + { + "description": "Longest pause for an individual slice of one cycle collection, including preparation (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_MAX_PAUSE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_max_pause", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time", + "type": "RECORD" + }, + { + "description": "Time spent in between cycle collections (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_TIME_BETWEEN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_time_between", + "type": "RECORD" + }, + { + "description": "Time spent on one cycle collection in a worker (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CYCLE_COLLECTOR_WORKER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "cycle_collector_worker_time", + "type": "RECORD" + }, + { + "description": "How long has about:debugging been active? (seconds) (bug 1204601)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ABOUTDEBUGGING_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_aboutdebugging_time_active", + "type": "RECORD" + }, + { + "description": "How long has the picker tool in accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_PICKER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_picker_time_active", + "type": "RECORD" + }, + { + "description": "How long has the platform accessibility been active (seconds) in accessibility panel.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_SERVICE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_service_time_active", + "type": "RECORD" + }, + { + "description": "How long has the accessibility panel been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ACCESSIBILITY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_accessibility_time_active", + "type": "RECORD" + }, + { + "description": "How long has the animation inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_ANIMATIONINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_animationinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the browser console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_BROWSERCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_browserconsole_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Changes panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CHANGESVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_changesview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the compatibility view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPATIBILITYVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_compatibilityview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the computed view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_COMPUTEDVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_computedview_time_active", + "type": "RECORD" + }, + { + "description": "How long has a custom developer tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_CUSTOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_custom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the DOM inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_DOM_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_dom_time_active", + "type": "RECORD" + }, + { + "description": "How long has the flexbox highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FLEXBOX_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_flexbox_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "How long has the font inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_FONTINSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_fontinspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the grid highlighter been active (seconds).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_GRID_HIGHLIGHTER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_grid_highlighter_time_active", + "type": "RECORD" + }, + { + "description": "Time taken (in ms) to update the inspector during a page reload, starting from new-root event.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_NEW_ROOT_TO_RELOAD_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_new_root_to_reload_delay", + "type": "RECORD" + }, + { + "description": "How long has the inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_INSPECTOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_inspector_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS browser debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSBROWSERDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsbrowserdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS debugger been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSDEBUGGER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsdebugger_time_active", + "type": "RECORD" + }, + { + "description": "How long has the JS profiler been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_jsprofiler_time_active", + "type": "RECORD" + }, + { + "description": "How long has the layout view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_LAYOUTVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_layoutview_time_active", + "type": "RECORD" + }, + { + "description": "How long has the Memory Tool been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_MEMORY_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_memory_time_active", + "type": "RECORD" + }, + { + "description": "How long has the network monitor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_NETMONITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_netmonitor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the options panel been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_OPTIONS_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_options_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to read a heap snapshot in mozilla::devtools::ChromeUtils::ReadHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_READ_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_read_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the responsive view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RESPONSIVE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_responsive_time_active", + "type": "RECORD" + }, + { + "description": "How long has the rule view been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_RULEVIEW_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_ruleview_time_active", + "type": "RECORD" + }, + { + "description": "The time (in milliseconds) that it took to save a heap snapshot in mozilla::devtools::ChromeUtils::SaveHeapSnapshot.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_save_heap_snapshot", + "type": "RECORD" + }, + { + "description": "How long has the storage inspector been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STORAGE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_storage_time_active", + "type": "RECORD" + }, + { + "description": "How long has the style editor been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_STYLEEDITOR_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_styleeditor_time_active", + "type": "RECORD" + }, + { + "description": "How long has the toolbox been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_TOOLBOX_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_toolbox_time_active", + "type": "RECORD" + }, + { + "description": "How long has the web console been active (seconds)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DEVTOOLS_WEBCONSOLE_TIME_ACTIVE_SECONDS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "devtools_webconsole_time_active", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that has a negative answer (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_FAILED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age for by-type queries at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time for a completed by-type resolution that succeeded (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_BY_TYPE_SUCCEEDED_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_by_type_succeeded_lookup_time", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_CLEANUP_AGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_cleanup_age", + "type": "RECORD" + }, + { + "description": "Time for a completed native name resolution (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_LOOKUP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_lookup_time", + "type": "RECORD" + }, + { + "description": "Time in resolve queue waiting to getaddrinfo (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_NATIVE_QUEUING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_native_queuing", + "type": "RECORD" + }, + { + "description": "DNS Cache Entry Age at Removal Time of non-expired entries (minutes)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_PREMATURE_EVICTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_premature_eviction", + "type": "RECORD" + }, + { + "description": "Time from the last received byte of the response until we have notified the consumer with a DNS record (msec)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DNS_TRR_PROCESSING_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dns_trr_processing_time", + "type": "RECORD" + }, + { + "description": "Time spent on the main thread during asynchronous content process launch.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_mainthread", + "type": "RECORD" + }, + { + "description": "Total time elapsed during asynchronous content process launch, until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_LAUNCH_TOTAL_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_launch_total", + "type": "RECORD" + }, + { + "description": "Time elapsed during synchronous content process launch until the process is usable for loading content.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CONTENT_PROCESS_SYNC_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_contentprocess_sync_launch", + "type": "RECORD" + }, + { + "description": "The time spent in the fully-black screen in fullscreen transition\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FULLSCREEN_TRANSITION_BLACK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_fullscreen_transition_black", + "type": "RECORD" + }, + { + "description": "Time from the beginning of the first slice to the end of the last slice (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GC_IN_PROGRESS_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_gc_in_progress", + "type": "RECORD" + }, + { + "description": "Time spent in FragmentDirective::CreateTextDirective()\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_create_directive", + "type": "RECORD" + }, + { + "description": "Time spent in TextDirectiveFinder::FindTextDirectivesInDocument() per page load\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "dom_textfragment_find_directives", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to evaluate DNR rules for one network request.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_evaluate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to read data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_read_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to write data into the DNR startup cache file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_startup_cache_write_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to validate DNR rules of individual ruleset\nwhen dynamic or static rulesets have been loaded from disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_apis_dnr_validate_rules_time", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to load a WebExtensions background page, from when the\nbuild function is called to when the page has finished processing the onload event.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_background_page_load", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a BrowserAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_browser_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for content scripts from a WebExtension to be injected into a window.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_content_script_injection", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a WebExtension to start up, from when the\nstartup function is called to when the startup promise resolves.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_extension_startup", + "type": "RECORD" + }, + { + "description": "Amount of time it takes for a PageAction popup to open.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_page_action_popup_open", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a get via storage.local using the IndexedDB backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_get_idb", + "type": "RECORD" + }, + { + "description": "Amount of time it takes to perform a set via storage.local using the Indexed backend.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "extensions_timing_storage_local_set_idb", + "type": "RECORD" + }, + { + "description": "Counts how long to generate canvas random noises.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fingerprinting_protection_canvas_noise_calculate_time_2", + "type": "RECORD" + }, + { + "description": "Time the FOG initializations take.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_initializations", + "type": "RECORD" + }, + { + "description": "The length of time between asking the child processes for their\nIPC buffers and all of them being received by the parent.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fog_ipc_flush_durations", + "type": "RECORD" + }, + { + "description": "Time(ms) spent activating additional fonts bundled with the product\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_BUNDLEDFONTS_ACTIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_bundledfonts_activate", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_COLLECT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_collect", + "type": "RECORD" + }, + { + "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram DWRITEFONT_DELAYEDINITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_dwritefont_delayedinit_total", + "type": "RECORD" + }, + { + "description": "gfxGDIFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GDI_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_gdi_init_total", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITFACENAMELISTS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initfacenamelists", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames", + "type": "RECORD" + }, + { + "description": "Time(ms) spent on reading other family names from all fonts for no timeout case\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FONTLIST_INITOTHERFAMILYNAMES_NO_DEFERRING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_initotherfamilynames_no_deferring", + "type": "RECORD" + }, + { + "description": "gfxMacPlatformFontList::InitFontList Total (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MAC_INITFONTLIST_TOTAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_mac_init_total", + "type": "RECORD" + }, + { + "description": "System font fallback (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback", + "type": "RECORD" + }, + { + "description": "System font fallback, first call (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SYSTEM_FONT_FALLBACK_FIRST.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "fontlist_system_font_fallback_first", + "type": "RECORD" + }, + { + "description": "The uptime of content processes. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_content_process_lifetime", + "type": "RECORD" + }, + { + "description": "Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_progress_time", + "type": "RECORD" + }, + { + "description": "The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_load_time", + "type": "RECORD" + }, + { + "description": "Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_page_reload_time", + "type": "RECORD" + }, + { + "description": "The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "geckoview_startup_runtime", + "type": "RECORD" + }, + { + "description": "The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a \"checkerboard pattern\" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_duration", + "type": "RECORD" + }, + { + "description": "The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_checkerboard_potential_duration", + "type": "RECORD" + }, + { + "description": "Time from vsync to finishing a composite in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram COMPOSITE_FRAME_ROUNDTRIP_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_frame_roundtrip_time", + "type": "RECORD" + }, + { + "description": "The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_composite_time", + "type": "RECORD" + }, + { + "description": "Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_full_paint_time", + "type": "RECORD" + }, + { + "description": "Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_content_paint_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gfx_scroll_present_latency", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.pageload.async_sheet_load`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_async_sheet_load", + "type": "RECORD" + }, + { + "description": "Duplicate of: `networking.http_content_html5parser_ondatafinished_to_onstop_delay`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "Duplicate of: `perf.largest_contentful_paint`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Duplicate of: `javascript_pageload.protect_time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_protect_time", + "type": "RECORD" + }, + { + "description": "Duplicate of: `network.sub_complete_load_net`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "Duplicate of: `performance.clone.deserialize.time`\nIntended for the purpose of testing client side sampling of data. This metric is disabled by default and will be enabled only for the purpose of the experiment. See Bug 1947604 for more information.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glam_experiment_time", + "type": "RECORD" + }, + { + "description": "The time it takes for a write-commit for the Glean database.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_database_write_time", + "type": "RECORD" + }, + { + "description": "Time needed for a failed send of a ping to the servers and getting a reply back.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_failure", + "type": "RECORD" + }, + { + "description": "Time needed for a successful send of a ping to the servers and getting a reply back\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_upload_send_success", + "type": "RECORD" + }, + { + "description": "Time waited for the dispatcher to unblock during shutdown.\nMost samples are expected to be below the 10s timeout used.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_dispatcher_wait", + "type": "RECORD" + }, + { + "description": "Time waited for the uploader at shutdown.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "glean_validation_shutdown_wait", + "type": "RECORD" + }, + { + "description": "GPU process initialization (excluding XPCOM and fork time) time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_INITIALIZATION_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_initialization_time", + "type": "RECORD" + }, + { + "description": "GPU process launch time in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram GPU_PROCESS_LAUNCH_TIME_MS_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "gpu_process_launch_time", + "type": "RECORD" + }, + { + "description": "Time difference between setting timer value and actually firing the timer for calling neqo\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP3_TIMER_DELAYED.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http3_timer_delayed", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> first byte received for subitem reply (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_first_byte_latency_time", + "type": "RECORD" + }, + { + "description": "HTTP subitem channel: Page start -> subitem open() (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_SUBITEM_OPEN_LATENCY_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_subitem_open_latency_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP2 transaction that has received a respone from a server that addretizes HTTP3 support (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP2_SUP_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http2_sup_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of HTTP/3 transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_http3", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of SPDY transaction (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TRANSACTION_WAIT_TIME_SPDY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "http_transaction_wait_time_spdy", + "type": "RECORD" + }, + { + "description": "If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time", + "type": "RECORD" + }, + { + "description": "If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "httpsfirst_downgrade_time_schemeless", + "type": "RECORD" + }, + { + "description": "Time from starting a decode to it showing up on the screen (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_ON_DRAW_LATENCY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_on_draw_latency", + "type": "RECORD" + }, + { + "description": "Time spent decoding an image (us)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IMAGE_DECODE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "image_decode_time", + "type": "RECORD" + }, + { + "description": "Time spent running JS GC when animating.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_animation", + "type": "RECORD" + }, + { + "description": "Requested GC slice budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget", + "type": "RECORD" + }, + { + "description": "How long a GC slice ran over its budget.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_budget_overrun", + "type": "RECORD" + }, + { + "description": "The time spent in the compact phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_compact_time", + "type": "RECORD" + }, + { + "description": "Time spent marking gray GC objects.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_gray", + "type": "RECORD" + }, + { + "description": "The time spent marking GC roots. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_roots_time", + "type": "RECORD" + }, + { + "description": "The time spent in the mark phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_time", + "type": "RECORD" + }, + { + "description": "Time spent marking GC objects held live through weakmaps.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_mark_weak", + "type": "RECORD" + }, + { + "description": "Longest GC slice in a GC.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_max_pause", + "type": "RECORD" + }, + { + "description": "The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_minor_time", + "type": "RECORD" + }, + { + "description": "The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_prepare_time", + "type": "RECORD" + }, + { + "description": "The time spent running a GC slice. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_slice_time", + "type": "RECORD" + }, + { + "description": "The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_sweep_time", + "type": "RECORD" + }, + { + "description": "Delay between queuing a GC task and the task starting.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_task_start_delay", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between", + "type": "RECORD" + }, + { + "description": "Time between minor garbage collections (nursery collections) for all runtimes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_minor", + "type": "RECORD" + }, + { + "description": "Time spent in between garbage collections for the main runtime.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_time_between_slices", + "type": "RECORD" + }, + { + "description": "The total time taken by a major collection. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_gc_total_time", + "type": "RECORD" + }, + { + "description": "Time in microseconds of an Ion compilation.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_ion_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_baseline_compile_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_delazification_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_execution_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_gc_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_parse_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_protect_time", + "type": "RECORD" + }, + { + "description": "Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "javascript_pageload_xdr_encode_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for the mouse up/down event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_CLICK_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_click", + "type": "RECORD" + }, + { + "description": "Time (ms) for the keyboard event to dispatch, but before handlers executing.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_QUEUED_KEYBOARD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_queued_keyboard", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled, but with overlapping events coalesced.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram INPUT_EVENT_RESPONSE_COALESCED_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_input_event_response_coalesced", + "type": "RECORD" + }, + { + "description": "Time (ms) from the Input event being created to the end of it being handled for events handling during page load only\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOAD_INPUT_EVENT_RESPONSE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_load_input_event_response", + "type": "RECORD" + }, + { + "description": "Time spent rasterizing each frame in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PAINT_RASTERIZE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_paint_rasterize_time", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the chrome process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_chrome_frame_delay", + "type": "RECORD" + }, + { + "description": "Delay in ms between the target and the actual handling time of the frame at refresh driver in the content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_content_frame_delay", + "type": "RECORD" + }, + { + "description": "Total time spent ticking the refresh driver in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram REFRESH_DRIVER_TICK.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_refresh_driver_tick", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from the first non-blank paint to the creation time of the next click, key, mouse or scroll event per top-level content browsing context.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_INTERACTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "layout_time_to_first_interaction", + "type": "RECORD" + }, + { + "description": "Time to flush and close the localStorage database (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localdomstorage_shutdown_database", + "type": "RECORD" + }, + { + "description": "Measures the time taken for the content process to fully set up a new database, including any time required for datastore preparation in the parent process. This duration can be significantly affected by datastore preloading, which is triggered when a page begins loading. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_new_object_setup_time", + "type": "RECORD" + }, + { + "description": "Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_database_request_allow_to_close_response_time", + "type": "RECORD" + }, + { + "description": "Measures the time taken by the parent process to prepare a datastore. This duration can be significantly affected by datastore preloading, which is triggered when a page begins to load. When a datastore is already preloaded, preparation is usually fast since no additional I/O is required. If an error occurs, the time is not recorded. In the future, we may introduce separate metrics to distinguish between different types of datastore preparations (e.g., loading data from disk vs. using preloaded data).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "localstorage_request_prepare_datastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparedatastore_processing_time", + "type": "RECORD" + }, + { + "description": "Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ls_preparelsdatabase_processing_time", + "type": "RECORD" + }, + { + "description": "Counts how long each folder compaction takes.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "mail_compact_duration", + "type": "RECORD" + }, + { + "description": "Total time spent playing Clearkey encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_CLEARKEY_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_clearkey_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_ENCRYPTED_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_encrypted_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing HDR video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HDR_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hdr_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video while element is hidden, in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_HIDDEN_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_hidden_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_play_time", + "type": "RECORD" + }, + { + "description": "Total time spent playing Widevine encrypted video in milliseconds.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram VIDEO_WIDEVINE_PLAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "media_video_widevine_play_time", + "type": "RECORD" + }, + { + "description": "Time spent gathering memory telemetry in milliseconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_COLLECTION_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_collection_time", + "type": "RECORD" + }, + { + "description": "Time(ms) to purge dirty heap pages.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MEMORY_FREE_PURGED_PAGES_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "memory_free_purged_pages", + "type": "RECORD" + }, + { + "description": "The delay caused by the e10s back pressure suspension(ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_BACK_PRESSURE_SUSPENSION_DELAY_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_back_pressure_suspension_delay_time", + "type": "RECORD" + }, + { + "description": "Time to open existing cache entry file. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_hit_time", + "type": "RECORD" + }, + { + "description": "Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_miss_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_complete_load_net", + "type": "RECORD" + }, + { + "description": "Time spent on cookie DB open with readahead (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_cookies_sqlite_open_readahead", + "type": "RECORD" + }, + { + "description": "Time spent (ms) during shutdown deleting disk cache v2 for 'clear private data' option\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache2_shutdown_clear_private", + "type": "RECORD" + }, + { + "description": "Total Time spent (ms) during disk cache shutdown [cache2]\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_DISK_CACHE_SHUTDOWN_V2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_disk_cache_shutdown_v2", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_font_download_end", + "type": "RECORD" + }, + { + "description": "Time for which an HTTP cache entry is kept warmed in memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_ALIVE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_alive_time", + "type": "RECORD" + }, + { + "description": "Time before we reload an HTTP cache entry again to memory\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram HTTP_CACHE_ENTRY_RELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_cache_entry_reload_time", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds between onStartRequest from the cache and onCacheEntryCheck. Report only when net wins and OCEC is before onStartRequest from net.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram NETWORK_RACE_CACHE_WITH_NETWORK_OCEC_ON_START_DIFF.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_ocec_on_start_diff", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that we saved when we race cache with network.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram NETWORK_RACE_CACHE_WITH_NETWORK_SAVED_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_race_cache_with_network_saved_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_cache_read_time", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_cached", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_complete_load_net", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_end", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_dns_start", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_from_cache", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_first_sent_to_last_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_http_revalidation", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_received", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_sub_tls_handshake", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tcp_connection", + "type": "RECORD" + }, + { + "description": "In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "network_tls_handshake", + "type": "RECORD" + }, + { + "description": "Time spent to read the first part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_first_read_time", + "type": "RECORD" + }, + { + "description": "Time spent to read the missing part of the metadata from the cache entry file.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_cache_metadata_second_read_time", + "type": "RECORD" + }, + { + "description": "Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_failed_lookup_time", + "type": "RECORD" + }, + { + "description": "Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_lookup_time", + "type": "RECORD" + }, + { + "description": "Time spent in the call to the native OS DNS resolution.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_native_https_call_time", + "type": "RECORD" + }, + { + "description": "Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time", + "type": "RECORD" + }, + { + "description": "Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_dns_renewal_time_for_ttl", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_page_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_channel_sub_open_to_first_sent_https_rr", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_cssloader_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_html5parser_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnDataFinished from the socket thread and processing it on the background thread.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_delay_2", + "type": "RECORD" + }, + { + "description": "The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_ondatafinished_to_onstop_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstart_delay", + "type": "RECORD" + }, + { + "description": "The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_content_onstop_delay", + "type": "RECORD" + }, + { + "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_http_onstart_suspend_total_time", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_TCP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_tcp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Close during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prclose_udp_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been the connectiviy change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in a failed PR_Connect during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECT_FAIL_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnect_fail_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been the connectivity change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_CONNECTIVITY_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_connectivity_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when there has been a link change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_LINK_CHANGE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_link_change", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when we are not shutting down and there has been niether a network nor an offline state change in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_normal", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue when the offline state has changed in the last 60s (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_OFFLINE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_offline", + "type": "RECORD" + }, + { + "description": "Time spent blocked in PR_ConnectContinue during a shutdown (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PRCONNECTCONTINUE_BLOCKING_TIME_SHUTDOWN.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_prconnectcontinue_blocking_time_shutdown", + "type": "RECORD" + }, + { + "description": "Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_block_main_thread", + "type": "RECORD" + }, + { + "description": "How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_sqlite_cookies_time_to_block_main_thread", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction without HTTPS RR (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time", + "type": "RECORD" + }, + { + "description": "Time from submission to dispatch of transaction when HTTPS RR is used (ms)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "networking_transaction_wait_time_https_rr", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that was cancelled.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_cancel", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that failed.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_failure", + "type": "RECORD" + }, + { + "description": "The time it takes to make an OCSP request that succeeded.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ocsp_request_time_success", + "type": "RECORD" + }, + { + "description": "The time to build a Gecko display list.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "paint_build_displaylist_time", + "type": "RECORD" + }, + { + "description": "The duration from StartupTimeline::MAIN to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_main_to_load_uri", + "type": "RECORD" + }, + { + "description": "The duration from cold process launch to load URI for an android cold applink.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_cold_applink_process_launch_to_load_uri", + "type": "RECORD" + }, + { + "description": "Time in milliseconds spent executing Javascript for top level documents that contain the asm.js use counter. Measures 5min of activity after the use counter is set then records the value in this histogram.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_js_exec_asm_js", + "type": "RECORD" + }, + { + "description": "Time from navigation start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint", + "type": "RECORD" + }, + { + "description": "Time from response start to largest contentful paint.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "perf_largest_contentful_paint_from_response_start", + "type": "RECORD" + }, + { + "description": "Time spent deserializing structured data\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_clone_deserialize_time", + "type": "RECORD" + }, + { + "description": "Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_keypress_present_latency", + "type": "RECORD" + }, + { + "description": "Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_interaction_mouseup_click_present_latency", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_non_blank_paint", + "type": "RECORD" + }, + { + "description": "Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_page_total_content_page_load", + "type": "RECORD" + }, + { + "description": "Time spent in milliseconds since a style sheet started loading async until it finished.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_async_sheet_load", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp", + "type": "RECORD" + }, + { + "description": "The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_fcp_responsestart", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_h3p_fcp_with_priority", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_supports_http3", + "type": "RECORD" + }, + { + "description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A \"priority\" header has not been received.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_http3_fcp_without_priority", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name).\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_pageload_load_time_responsestart", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_complete", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_content_loaded_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_dom_interactive", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_end", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_load_event_start", + "type": "RECORD" + }, + { + "description": "Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.)\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_response_start", + "type": "RECORD" + }, + { + "description": "Time in milliseconds from navigationStart to domLoading.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_DOM_LOADING_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_dom_loading", + "type": "RECORD" + }, + { + "description": "The time between navigation start and the first contentful paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and contentful paint. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram TIME_TO_FIRST_CONTENTFUL_PAINT_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "performance_time_to_first_contentful_paint", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for learn (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_LEARN_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_learn_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we take action\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_ACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_action", + "type": "RECORD" + }, + { + "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_TIME_TO_INACTION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_time_to_inaction", + "type": "RECORD" + }, + { + "description": "Amount of time spent doing the work for predict (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREDICT_WORK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_predict_work_time", + "type": "RECORD" + }, + { + "description": "How long it takes from OnStartRequest to OnStopRequest for a prefetch\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_PREFETCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_prefetch_time", + "type": "RECORD" + }, + { + "description": "Amount of time a predictor event waits in the queue (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PREDICTOR_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "predictor_wait_time", + "type": "RECORD" + }, + { + "description": "How much time was spent to open the dialog, including loading data sizes\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "privacy_sanitize_load_time", + "type": "RECORD" + }, + { + "description": "Time spent in the generic child process launching code, which is run off-main-thread and used by all child process types\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram CHILD_PROCESS_LAUNCH_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_child_launch", + "type": "RECORD" + }, + { + "description": "Average lifetime of a content process in seconds\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PROCESS_LIFETIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "process_lifetime", + "type": "RECORD" + }, + { + "description": "Elapsed time to detect whether a element is a signup form.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram PWMGR_SIGNUP_FORM_DETECTION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "pwmgr_signup_form_detection", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to initialize temporary storage within the QuotaManager after startup on the I/O thread. The duration excludes any periods when the system was suspended (e.g. system sleep or hibernation), to better reflect actual time spent performing temporary storage initialization. The primary goal is to measure the actual runtime cost of temporary storage initialization under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements during startup-related phases, particularly for users with significant amounts of temporary storage data on disk.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_initialize_temporarystorage_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "This metric logs the total time required to shut down the QuotaManager instance on the PBackground thread. The duration excludes any periods when the system was suspended (system sleep or hibernation), to better reflect actual time spent performing shutdown. While the shutdown process is measured on the PBackground thread, it involves spinning the event loop and thus waiting for operations on other threads (especially I/O threads) to complete. The primary goal is to measure the actual runtime cost of shutdown under typical conditions, without distortion from system-level suspension delays. This data can help detect performance regressions or improvements related to QuotaManager shutdown behavior, especially in scenarios involving large amounts of user storage data.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "quotamanager_shutdown_total_time_excluding_suspend", + "type": "RECORD" + }, + { + "description": "Time (ms) it takes to fetch the country code\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "region_fetch_time", + "type": "RECORD" + }, + { + "description": "How long a screen wake lock was held in ms\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCREENWAKELOCK_HELD_DURATION_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "screenwakelock_held_duration", + "type": "RECORD" + }, + { + "description": "Time spent waiting for off-thread compiles in the script preloader.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SCRIPT_PRELOADER_WAIT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "script_preloader_wait_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in an isolated content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_ISOLATED_LAUNCH_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_isolated_launch_time", + "type": "RECORD" + }, + { + "description": "Time (ms) for spawning a service worker in the remote content process.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_LAUNCH_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_launch_time", + "type": "RECORD" + }, + { + "description": "Tracking how ServiceWorkerRegistrar loads data before the first content is shown.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SERVICE_WORKER_REGISTRATION_LOADING.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "service_worker_registration_loading", + "type": "RECORD" + }, + { + "description": "The difference between the js slow script timeout for content set in prefs and the actual time we waited before displaying the notification (msec).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SLOW_SCRIPT_NOTIFY_DELAY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "slow_script_warning_notify_delay", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for conservative-mode connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_CONSERVATIVE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_conservative", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH 'Real'\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for connections using ECH GREASE\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_ECH_GREASE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_ech_grease", + "type": "RECORD" + }, + { + "description": "ms of SSL wait time including TCP and proxy tunneling for first-try connections\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram SSL_TIME_UNTIL_READY_FIRST_TRY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "ssl_time_until_ready_first_try", + "type": "RECORD" + }, + { + "description": "The duraion of the socketThread cycle during shutdown, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENT_THE_LAST_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_event_the_last_cycle", + "type": "RECORD" + }, + { + "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_AND_EVENTS_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_and_events_cycle", + "type": "RECORD" + }, + { + "description": "Time spent blocked on poll (ms).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_BLOCK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_block_time", + "type": "RECORD" + }, + { + "description": "The duration of poll. (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram STS_POLL_CYCLE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "sts_poll_cycle", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_canvas_draw_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_page_load_time", + "type": "RECORD" + }, + { + "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_queue_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_CAPTURE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_capture_time", + "type": "RECORD" + }, + { + "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram FX_THUMBNAILS_STORE_TIME_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "thumbnails_store_time", + "type": "RECORD" + }, + { + "description": "Update: How much longer langpacks took to download than the app update in seconds.\nThis metric was generated to correspond to the Legacy Telemetry linear histogram UPDATE_LANGPACK_OVERTIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_langpack_overtime", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (externally initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_EXTERNAL.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_external", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (timer initiated)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_NOTIFY.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_notify", + "type": "RECORD" + }, + { + "description": "Update: interval in days since the last background update check (after we already have an update ready)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram UPDATE_LAST_NOTIFY_INTERVAL_DAYS_SUBSEQUENT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "update_last_notify_interval_days_subsequent", + "type": "RECORD" + }, + { + "description": "Time spent per AsyncClassifyLocalWithTables (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_ASYNC_CLASSIFYLOCAL_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_async_classifylocal_time", + "type": "RECORD" + }, + { + "description": "Time spent per classifier lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_CL_CHECK_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_cl_check_time", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice lookup (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_LOOKUP_TIME_2.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_lookup_time_2", + "type": "RECORD" + }, + { + "description": "Time spent per dbservice shutdown (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_SHUTDOWN_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_shutdown_time", + "type": "RECORD" + }, + { + "description": "Time spent constructing Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_CONSTRUCT_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_construct_time", + "type": "RECORD" + }, + { + "description": "Time spent fallocating Variable-Length PrefixSet (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FALLOCATE_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fallocate_time", + "type": "RECORD" + }, + { + "description": "Time spent loading Variable-Length PrefixSet from file (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram URLCLASSIFIER_VLPS_FILELOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "urlclassifier_vlps_fileload_time", + "type": "RECORD" + }, + { + "description": "Time to download a webfont (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBFONT_DOWNLOAD_TIME.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webfont_download_time", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound audio (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound audio (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_audio_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call with audio or video in it lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_AV_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_av_call_duration", + "type": "RECORD" + }, + { + "description": "The length of time (in seconds) that a call lasted.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_CALL_DURATION.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_call_duration", + "type": "RECORD" + }, + { + "description": "Locally measured jitter on inbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_INBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_inbound_jitter", + "type": "RECORD" + }, + { + "description": "RTCP-reported jitter by remote recipient of outbound video (ms). Sampled every second of a call (for easy comparison).\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_jitter", + "type": "RECORD" + }, + { + "description": "Roundtrip time of outbound video (ms). Sampled every second of a call.\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "webrtc_video_quality_outbound_rtt", + "type": "RECORD" + }, + { + "description": "Time spent checking for and notifying listeners that the user is idle (ms)\nThis metric was generated to correspond to the Legacy Telemetry exponential histogram IDLE_NOTIFY_IDLE_MS.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "widget_notify_idle", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_framebuild_time", + "type": "RECORD" + }, + { + "description": "The time spent waiting for the GPU to complete previously issued drawing commands.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_gpu_wait_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize blobs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_blobs_time", + "type": "RECORD" + }, + { + "description": "The time to rasterize glyphs for consumption by WebRender.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_rasterize_glyphs_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time", + "type": "RECORD" + }, + { + "description": "WebRender renderer time excluding frames in which shader compilation took place.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_renderer_time_no_sc", + "type": "RECORD" + }, + { + "description": "WebRender scene build time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_scenebuild_time", + "type": "RECORD" + }, + { + "description": "WebRender scene swap time.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_sceneswap_time", + "type": "RECORD" + }, + { + "description": "Time spent blocking on the shader compilation for LazilyCompiled shaders created with ASYNC_COMPILE or FULL_COMPILE.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_shaderload_time", + "type": "RECORD" + }, + { + "description": "Time taken by WebRender to update the texture cache.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_texture_cache_update_time", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a transaction and the associated frame build beginning.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_frame_build", + "type": "RECORD" + }, + { + "description": "Time elapsed between the construction of a frame and the start of rendering.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "wr_time_to_render_start", + "type": "RECORD" + }, + { + "description": "How long it took to parse the XPI Database.\nPreviously reported in \"main\" ping `simpleMeasurements`.\n", + "fields": [ + { + "mode": "NULLABLE", + "name": "sum", + "type": "INT64" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "value", + "type": "INT64" + } + ], + "mode": "REPEATED", + "name": "values", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "xpi_database_parses", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "timing_distribution", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "metrics", + "type": "RECORD" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized app name", + "mode": "NULLABLE", + "name": "normalized_app_name", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized channel name", + "mode": "NULLABLE", + "name": "normalized_channel", + "type": "STRING" + }, + { + "description": "An ISO 3166-1 alpha-2 country code", + "mode": "NULLABLE", + "name": "normalized_country_code", + "type": "STRING" + }, + { + "description": "Set to \"Other\" if this message contained an unrecognized OS name", + "mode": "NULLABLE", + "name": "normalized_os", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "normalized_os_version", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "end_time", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "key", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "branch", + "type": "STRING" + }, + { + "fields": [ + { + "mode": "NULLABLE", + "name": "enrollment_id", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "type", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "extra", + "type": "RECORD" + } + ], + "mode": "NULLABLE", + "name": "value", + "type": "RECORD" + } + ], + "mode": "REPEATED", + "name": "experiments", + "type": "RECORD" + }, + { + "mode": "NULLABLE", + "name": "ping_type", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "reason", + "type": "STRING" + }, + { + "mode": "NULLABLE", + "name": "seq", + "type": "INT64" + }, + { + "mode": "NULLABLE", + "name": "start_time", + "type": "STRING" + } + ], + "mode": "NULLABLE", + "name": "ping_info", + "type": "RECORD" + }, + { + "description": "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99", + "mode": "NULLABLE", + "name": "sample_id", + "type": "INT64" + }, + { + "description": "Time when the ingestion edge server accepted this message", + "mode": "NULLABLE", + "name": "submission_timestamp", + "type": "TIMESTAMP" + } +] diff --git a/schemas/thunderbird-desktop/metrics/metrics.2.schema.json b/schemas/thunderbird-desktop/metrics/metrics.2.schema.json new file mode 100644 index 000000000..98bdcec5d --- /dev/null +++ b/schemas/thunderbird-desktop/metrics/metrics.2.schema.json @@ -0,0 +1,784 @@ +{ + "$id":"moz://mozilla.org/schemas/glean/ping/2", + "$schema":"http://json-schema.org/draft-06/schema#", + "additionalProperties":false, + "description":"Temporary Glean ping schema for https://mozilla-hub.atlassian.net/browse/DENG-8494\n", + "mozPipelineMetadata":{ + "bq_dataset_family":"thunderbird_desktop", + "bq_metadata_format":"structured", + "bq_table":"metrics_v1", + "expiration_policy":{ + "delete_after_days":420 + }, + "include_client_id":true, + "include_info_sections":true + }, + "properties":{ + "$schema":{ + "enum":[ + "moz://mozilla.org/schemas/glean/ping/1" + ], + "type":"string" + }, + "client_info":{ + "additionalProperties":false, + "properties":{ + "android_sdk_version":{ + "description":"The optional Android specific SDK version of the software running on this hardware device.", + "type":"string" + }, + "app_build":{ + "description":"The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`.", + "type":"string" + }, + "app_channel":{ + "description":"The channel the application is being distributed on.", + "type":"string" + }, + "app_display_version":{ + "description":"The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\".", + "type":"string" + }, + "architecture":{ + "description":"The architecture of the device, (e.g. \"arm\", \"x86\").", + "type":"string" + }, + "attribution":{ + "additionalProperties":false, + "properties":{ + "campaign":{ + "description":"The attribution campaign (e.g. 'mozilla-org').", + "type":"string" + }, + "content":{ + "description":"The attribution content (e.g. 'firefoxview').", + "type":"string" + }, + "medium":{ + "description":"The attribution medium (e.g. 'organic' for a search engine).", + "type":"string" + }, + "source":{ + "description":"The attribution source (e.g. 'google-play').", + "type":"string" + }, + "term":{ + "description":"The attribution term (e.g. 'browser with developer tools for android').", + "type":"string" + } + }, + "type":"object" + }, + "build_date":{ + "description":"The date & time the application was built", + "format":"datetime", + "type":"string" + }, + "client_id":{ + "description":"A UUID uniquely identifying the client.", + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "device_manufacturer":{ + "description":"The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop).", + "type":"string" + }, + "device_model":{ + "description":"The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop).", + "type":"string" + }, + "distribution":{ + "additionalProperties":false, + "properties":{ + "name":{ + "description":"The distribution name (e.g. 'MozillaOnline').", + "type":"string" + } + }, + "type":"object" + }, + "first_run_date":{ + "description":"The date of the first run of the application.", + "format":"datetime", + "type":"string" + }, + "locale":{ + "description":"The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\".", + "type":"string" + }, + "os":{ + "description":"The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown", + "type":"string" + }, + "os_version":{ + "description":"The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`.", + "type":"string" + }, + "session_count":{ + "description":"An optional running counter of the number of sessions for a client.", + "type":"integer" + }, + "session_id":{ + "description":"An optional UUID uniquely identifying the client's current session.", + "type":"string" + }, + "telemetry_sdk_build":{ + "description":"The version of the Glean SDK", + "type":"string" + }, + "windows_build_number":{ + "description":"The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms", + "type":"integer" + } + }, + "required":[ + "app_build", + "app_display_version", + "architecture", + "first_run_date", + "os", + "os_version", + "telemetry_sdk_build" + ], + "type":"object" + }, + "events":{ + "items":{ + "additionalProperties":false, + "properties":{ + "category":{ + "type":"string" + }, + "extra":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":40, + "type":"string" + }, + "type":"object" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "timestamp", + "category", + "name" + ], + "type":"object" + }, + "type":"array" + }, + "metrics":{ + "additionalProperties":false, + "properties":{ + "boolean":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "counter":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "custom_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "datetime":{ + "additionalProperties":{ + "format":"datetime", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "dual_labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "jwe":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_boolean":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"boolean" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_counter":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_custom_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "sum", + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_memory_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_quantity":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_rate":{ + "additionalProperties":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_string":{ + "additionalProperties":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "labeled_timing_distribution":{ + "additionalProperties":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "comment":"This must be at least the length of 'category.name' metric names to support error reporting", + "maxLength":111, + "type":"string" + }, + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "memory_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "object":{ + "additionalProperties":{ + "items":{ + "format":"json" + }, + "type":[ + "object", + "array" + ] + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "quantity":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "rate":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "denominator":{ + "minimum":0, + "type":"integer" + }, + "numerator":{ + "minimum":0, + "type":"integer" + } + }, + "required":[ + "numerator", + "denominator" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string":{ + "additionalProperties":{ + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "string_list":{ + "additionalProperties":{ + "items":{ + "type":"string" + }, + "type":"array" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "text":{ + "additionalProperties":{ + "maxLength":204800, + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timespan":{ + "additionalProperties":{ + "properties":{ + "time_unit":{ + "enum":[ + "nanosecond", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day" + ], + "type":"string" + }, + "value":{ + "type":"integer" + } + }, + "required":[ + "value", + "time_unit" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "timing_distribution":{ + "additionalProperties":{ + "properties":{ + "sum":{ + "type":"integer" + }, + "values":{ + "additionalProperties":{ + "type":"integer" + }, + "propertyNames":{ + "pattern":"^[0-9]+$" + }, + "type":"object" + } + }, + "required":[ + "values" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "url":{ + "additionalProperties":{ + "pattern":"^((?!data)([a-zA-Z][a-zA-Z0-9-\\+\\.]*):(.*))$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + }, + "uuid":{ + "additionalProperties":{ + "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type":"string" + }, + "propertyNames":{ + "maxLength":111, + "pattern":"^[a-z_][a-z0-9_\\.]+$", + "type":"string" + }, + "type":"object" + } + }, + "type":"object" + }, + "ping_info":{ + "additionalProperties":false, + "properties":{ + "end_time":{ + "format":"datetime", + "type":"string" + }, + "experiments":{ + "additionalProperties":{ + "additionalProperties":false, + "properties":{ + "branch":{ + "maxLength":100, + "type":"string" + }, + "extra":{ + "oneOf":[ + { + "type":"null" + }, + { + "properties":{ + "enrollment_id":{ + "type":"string" + }, + "type":{ + "type":"string" + } + }, + "type":"object" + } + ] + } + }, + "required":[ + "branch" + ], + "type":"object" + }, + "propertyNames":{ + "maxLength":100, + "type":"string" + }, + "type":"object" + }, + "ping_type":{ + "maxLength":30, + "pattern":"^[a-z-_][a-z0-9-_]*$", + "type":"string" + }, + "reason":{ + "maxLength":30, + "type":"string" + }, + "seq":{ + "type":"integer" + }, + "start_time":{ + "format":"datetime", + "type":"string" + } + }, + "required":[ + "seq", + "start_time", + "end_time" + ], + "type":"object" + } + }, + "required":[ + "ping_info", + "client_info" + ], + "title":"Ping transport", + "type":"object" +} \ No newline at end of file